Intereting Posts
Лучшие практики в PHP и MySQL с международными строками PHP предотвращает цикл foreach от перезаписывания объекта Преобразование строки в объект JSON php Не помещается на место, пакет, загруженный классом, требуется от композитора, делает php throw Класс не найден PHP – автоматическая отправка / запуск формы CodeIgniter: проверка формы с помощью многомерных данных POST PHP mail () не отправляется (Hostinger) Как я могу отправить ByteArray (из Flash) и некоторые данные формы в php? Как я могу дезинформировать свои заявления о включении? Преобразование HTML в Excel Rich Text и наоборот HTML – изменение цвета в текстовой области из опции внутри поля выбора, сгенерированного из mysql Apache mod_rewrite не смог удалить конечную косую черту Как я могу определить, называется ли функция статическим в PHP? Запуск PHP-скрипта из командной строки в качестве фонового процесса Можем ли мы использовать функцию php?

foreach с диапазоном не работает

вот мой код:

function my_function() { $states = array('schwarz', 'rot', 'blau'); foreach(range(0, 5) as $number) { foreach ($states as $state) { $result = "<img src=\"inventory_images/8.jpg\" onclick=\"changecolor(this)\" name=\"nummer.$number\" />"; $testPath = "transactions/Ordner$number/$state.png"; if (file_exists($testPath)) { $result = $testPath; } } break; } return $result; } $imagesPerLine = array(1=>1, 2=>2); $default = 3; $lines = array(1, 2, 3); $html=""; foreach ($lines as $line) { if (!isset($imagesPerLine[$line])) { $imagesPerLine[$line] = $default; } $html.= "<tr>\n"; for ($i = 1; $i <= $imagesPerLine[$line]; $i++) { $html.=sprintf("<td>%s</td>\n", my_function()); } $html.="</tr>\n"; } echo $html; 

и это результат:

 <tr> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.0" /></td> </tr> <tr> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.0" /></td> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.0" /></td> </tr> <tr> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.0" /></td> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.0" /></td> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.0" /></td> </tr> 

теперь я не знаю, как настроить мою часть foreach, чтобы получить значение name = n + 1.the должно быть:

 <tr> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.0" /></td> </tr> <tr> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.1" /></td> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.2" /></td> </tr> <tr> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.3" /></td> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.4" /></td> <td><img src="inventory_images/8.jpg" onclick="changecolor(this)" name="nummer.5" /></td> </tr> 

во-первых, я подумал: «сломайте»; или "return $ result"; неправильно, но я не думаю, что сейчас. Может кто-нибудь помочь мне изменить свой сценарий, может быть? спасибо и привет!

Related of "foreach с диапазоном не работает"

Ваша логика ошибочна. Поскольку вы возвращаете строку из своей функции и распечатываете ее снаружи, вам нужно изменить способ ее выполнения. В настоящее время вы делаете это:

 for ($i = 1; $i <= $imagesPerLine[$line]; $i++) { $html.=sprintf("<td>%s</td>\n", my_function()); } 

Звучит для меня так, как вам нужно, чтобы ваша функция завершала свой контент с помощью <td>...</td> , а также объединялась. Поэтому внутри вашей функции вы должны:

 $result .= "<td>etc etc $number etc etc</td>\n"; 

Также было бы хорошей практикой положить $result = ""; в верхней части этой функции.

Теперь, когда вы возвращаете $result , вы должны получить все, что вы собрали в этих циклах, и добавьте это значение в $html , изменив цикл вызова:

 for ($i = 1; $i <= $imagesPerLine[$line]; $i++) { $html .= my_function(); }