Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Помогите понять как сделать такой цикл.

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
К примеру у меня два массива.
 
Массив 1
 
Test1
Test2
Test3
Test4
Test5
Test6
Test7
Test8
Test9
 
Массив 2
 
Word1
Word2
Word3
Word4
Word5
Word6
 
Как мне сделать цикл так, что бы выполняся он таким образом
 
 
Word1
 
Test1
Test2
Test3
 
Word2
 
Test4
Test5
Test6
 
Смысл такой, что после каждого 3 выполнение вставляеться слово Word  
Т.е
Вставили слово
1
2
3
Вставили слово
1
2
3
Вставили слово

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 19:51 16-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MyGoogle
телепатов ищем, чтобы догадались о языке?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:51 16-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ооо шериии привет помню тебя
 
Вообщем язык PHP
 
 
П.с оно кажеться не слишком сложно сделать, но логика как то не доходит до меня, я с циклами мало связан был уже голову ломаю сижу как так сделать может я просто чего то не знаю или неусматриваю..

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 19:53 16-12-2013 | Исправлено: MyGoogle, 19:54 16-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MyGoogle

Цитата:
Вообщем язык PHP  

а сразу упомянуть сложно ?)  
 

Код:
<?php
$arr1 = array(
'Test1',  
'Test2',  
'Test3',  
'Test4',  
'Test5',  
'Test6',  
'Test7',  
'Test8',  
'Test9'  
);
 
$arr2 = array(
'Word1',  
'Word2',  
'Word3',  
'Word4',  
'Word5',  
'Word6'
);
 
$nl = '<br>';
$numofelements = 3;
 
foreach($arr2 as $i => $w)
{
  echo $w . $nl . $nl;
  echo implode($nl, array_slice($arr1, $i * $numofelements, $numofelements)) . $nl . $nl;  
}

 
результат

Цитата:
Word1
 
Test1
Test2
Test3
 
Word2
 
Test4
Test5
Test6
 
Word3
 
Test7
Test8
Test9
 
Word4
 
 
 
Word5
 
 
 
Word6
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:03 16-12-2013 | Исправлено: Cheery, 20:03 16-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Огромное спасибо !
Вроде работает только проверил.
А можно обьяснить не много логику ?

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 20:45 16-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MyGoogle

Цитата:
А можно обьяснить не много логику ?

написано же все.. возьмите описание каждой функции и прочитайте.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:11 16-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вообщем не работает, т.е работает но не так как я хотел, я просто не знаю как это правильно организовать... голова не варит и наверно приведенный пример не был слишков верен..
Так как в результате я просто получаю строки массива 3 сразу а не по одной...
 
Вообщем я привел другой пример мне нужно генерировать вот так
 
<?
$word_array=("word1","word2","word3","word4","word5","word6");
$name_array("name1","name2","name3","name4","name5","name6","name7","name8");
?>
 
Нужно сгенерировать подобное.
 
<div><input type="checkbox" name="word1" value="ok"></div>
<div><input type="checkbox" name="name1" value="ok"></div>
<div><input type="checkbox" name="name2" value="ok"></div>
<div><input type="checkbox" name="name3" value="ok"></div>
 
 
<div><input type="checkbox" name="word2" value="ok"></div>
<div><input type="checkbox" name="name3" value="ok"></div>
<div><input type="checkbox" name="name4" value="ok"></div>
<div><input type="checkbox" name="name5" value="ok"></div>
 
 
<div><input type="checkbox" name="word4" value="ok"></div>
<div><input type="checkbox" name="name6" value="ok"></div>
<div><input type="checkbox" name="name7" value="ok"></div>
<div><input type="checkbox" name="name8" value="ok"></div>

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 21:22 16-12-2013 | Исправлено: MyGoogle, 21:22 16-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MyGoogle
ну включите голову, ведь элементарные вещи, елки-палки..
 

Цитата:
echo implode($nl, array_slice($arr1, $i * $numofelements, $numofelements)) . $nl . $nl;  

меняете на  
 

Код:
  foreach(array_slice($arr1, $i * $numofelements, $numofelements) as $el)
  {
    echo '<input type="text" value="' . $el . '"><br>';    
  }

ps: input просто от балды - делайте как вам хочется.
аналогично нужно изменить
Цитата:
echo $w . $nl . $nl;

на вывод желаемого кода.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:29 16-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо Шерри вроде работает
Ты уже сдесь лет так 5 точно вроде
 

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 21:47 16-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MyGoogle

Цитата:
Ты уже сдесь лет так 5 точно вроде


Цитата:
Зарегистр. 03-04-2002


Цитата:
Модерирует : Cheery

прошу, не нужно личного флейма.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:52 16-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вообщем спасибо большое, много стало легче, теперь делать с вашим примером.
 
 
Добавлено:
 
 
Оооо я щас сума сойду.... с этими массивами...
 
К примеру захотел еще добавить одно поле.... с данными с другова массива...
 
Теперь не пойму логику добавление еще одного поля..
 
Т.е я хочу понять как можно без проблем добовлять из массива данные в поля - но самая большая проблема это то что они не просто выводяться а в особенном порядке..
 
 
-------------------------------------------------------------------------------
$numofelements1 = 3;
 
foreach($arr1 as $i => $w)
{
 
echo "$w<br><br>";
 
foreach(array_slice($arr2, $i * $numofelements, $numofelements) as $el)
{
    echo "$el<br><br>";
 
}
 
 
}  
-----------------------------------------------------------------------------
 
К примеру я хочу добавить еще одно поле  HELLO1
 
<div><input type="checkbox" name="word1" value="ok"></div>
<div><input type="checkbox" name="hello1" value="ok"></div>
<div><input type="checkbox" name="name1" value="ok"></div>
<div><input type="checkbox" name="hello2" value="ok"></div>
<div><input type="checkbox" name="name2" value="ok"></div>
<div><input type="checkbox" name="hello3" value="ok"></div>
<div><input type="checkbox" name="name3" value="ok"></div>  
 
Как я только не переставлял этот foreach.. копировал делал все только в беспорядке было..
 
Добавлено:
Шериии пожалуйсто не то что я не делаю я делаю но не могу додуматься уже и писать стыдно
 
Ищу в интернете, вообщем как я понял, там не все так просто, как на вашем примере, там надо как то двойной массив использовать что ли.. вообщем буду пробовать - если как то можно сделать из вашего примера помогите пожалуйсто

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 22:38 16-12-2013 | Исправлено: MyGoogle, 00:05 17-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MyGoogle
а нельзя сразу написать все??  
 

Цитата:
foreach(array_slice($arr2, $i * $numofelements, $numofelements) as $j => $el)  
{  
    echo $arr3[$i * $numofelements + $j] . "<br>$el<br>";  
 
}  



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:08 17-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это магия какаето - спасибо большое !  
 
А можете обьяснить вот это  
 
 
 
 
Все работает но логику не пойму..
 
Если $j больше или равно $el....
 
Потом  
 
 
echo $arr3[$i * $numofelements + $j] . "<br>$el<br>";  
 
Тут вообще не пойму как это ..
 
Просто то что вы помогли это хорошо, но если я не пойму логику, считайте что просто вы сделали как бы работу за меня.. и дальше не буду понимать..  а так я хочу понять что бы понимать как это работает логика работы

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 00:37 17-12-2013 | Исправлено: MyGoogle, 00:37 17-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MyGoogle

Цитата:
Если $j больше или равно

где вы видите "если"??  
что такое ассоциативные массивы знаете?  
так и у каждого массива есть ключ (индекс) => значение

Цитата:
$i * $numofelements + $j

элементарная математика школьного уровня

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:46 17-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Почитал, про ассоциативные массивы
Теперь понял более мение логику,
Просто для меня сложно понимать не сами функции "если я их знаю"
А последовательность и логическую структуру выполнение их...
 
Вообщем завтра раберу все и потренеруюсь на вашем примере создавать разные версии (так для себя что бы понять нормально)
 
Спасибо еще раз очень.

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 01:00 17-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос...
 
Есть массив
 
$arr1=array("a1","a2","a3","b1","b2","b3","c1",c2","c3");
 
Как мне во всем массиве поменять местами к примеру что бы массив стал таким
 
$arr1=array("a2","a3","a1","b2","b3","b1","c2",c3","c1");
 
Просто вывод изначальна массива не в такой расположенности как нужно...  
 
Добавлено:
Нашел аррай реверс... но то что мне нужно находиться не в конце, а по середине, и не как не получаеться сделать в массиве эту строку первой.. потому что они идет второй..
 
Вообщем добрел я до функции USORT
 но и там меняеться как хочеш но не так как мне надо капец.....
 
Такое впечетление что те функции созданны для перемешивание всего двух значений... просто я не допонимаю чегото..

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 12:49 17-12-2013 | Исправлено: MyGoogle, 18:56 17-12-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MyGoogle
может прекратите извращаться то?  
 

Цитата:
Такое впечетление что те функции созданны для перемешивание всего двух значений.

потому что сравнение идет парами.
 
вам же нужно разбирать массив на куски, содержащие только a, только b и так далее.
после чего к каждому этому блоку применяете  array_shift, вставляя выкинутое значение в конец и потом объединяя блоки обратно.
 

Код:
$arr1 = array("a1","a2","a3","b1","b2","b3","c1","c2","c3");  
$temp = array();
foreach($arr1 as $e)
{
   preg_match('/^\w/', $e, $match);
   if ($match)
    $temp[$match[0]][] = $e;  
}
 
foreach($temp as &$e)
{
    $first = array_shift($e);
    $e[] = $first;
}
 
$arr1 = array();
 
array_walk_recursive($temp, function($x) use (&$arr1) {$arr1[] = $x;});
 
var_dump($arr1);

 

Цитата:
array(9) {
  [0]=>
  string(2) "a2"
  [1]=>
  string(2) "a3"
  [2]=>
  string(2) "a1"
  [3]=>
  string(2) "b2"
  [4]=>
  string(2) "b3"
  [5]=>
  string(2) "b1"
  [6]=>
  string(2) "c2"
  [7]=>
  string(2) "c3"
  [8]=>
  string(2) "c1"
}

 
array_walk_recursive можно переписать и как

Код:
foreach($temp as $e)
  $arr1 = array_merge($arr1, $e);


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:10 17-12-2013 | Исправлено: Cheery, 21:26 17-12-2013
MyGoogle

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Буду учить тренероваться как так сделать сегодня пол интернета перерыл позаписовал разных примеро функция за то полезных... ну и почти нашел то что хотел как это сделать - но вот буду пробовать разбить потом все склеить .. так что бы он был упорядочен как мне нужно
 
А то к примеру получаетья первое поле будет возвраст - а мне к примеру надо что бы было Имя потом Возвраст потом Пол к примеру - вообще было бы не плохо сделать такую функцию и что бы она просто где то лежала полезная я думаю и еще сделать как то так что бы без особого труда можно было менять перестановки в массиве

Всего записей: 219 | Зарегистр. 06-12-2008 | Отправлено: 21:37 17-12-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Помогите понять как сделать такой цикл.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru