Мой массив $ array содержит следующее:
Array ( [0] => Array (
[label] => Location and Contact
[description] =>
) [1] => Array (
[label] => Province
[name] => province
[options] => Array ( [0] => Province 1
[1] => Province 2
[2] => Province 3 )
) [2] => Array (
[label] => City
[name] => city
[options] => Array ( [0] => City 1
[1] => City 2
[2] => City 3 )
)
Чего я хочу добиться, так это зациклить эти три города внизу, возможно, с помощью [name] => city.
Что я пробовал до сих пор (что на самом деле выглядит не очень хорошо):
foreach ($array as $arr) {
foreach ($arr['options'] as $option) {
?>
» <?php echo $option; ?><br />
<?php
}
}
Моя очевидная проблема с кодом — это цикл foreach внутри цикла foreach, плюс я не понял, как определить [name] => city из [name] => провинция, у обоих есть [options].
Я довольно плохо знаком с циклическими массивами.
ОБНОВЛЕНИЕ (с моим ответом)
Сочетая ответ worldofjr и мою модификацию, я могу заключить каждый цикл в контейнер <li>, <option>, <div>
и т. д., я только что создал два foreach’а:
foreach($array as $arr) {
if($arr['name'] == "city") {
$cities = $arr['options'];
}
}
echo '<select>';
foreach($cities as $city){
echo '<option value="'.$city.'" class="class1 class2" data-att="att">'.$city.'</option>';
}
echo '</select>';
Вы могли бы использовать implode($glue,$array)
следующее;
foreach($array as $arr) {
if($arr['name'] == "city") {
echo implode('<br>',$arr['options']);
}
}
или если вы хотите распечатать список городов, оберните implode()
с тегами списка, как это;
foreach($array as $arr) {
if($arr['name'] == "city") {
echo "<ul><li>" . implode("</li><li>", $arr['options']) . "</li></ul>";
}
}
Увидеть Руководство по PHP: взорваться.
Надеюсь это поможет!
Я вообще не понимаю, но я хочу, чтобы вы просто вывели три города, вы можете сделать это
foreach ($array as $arr)
{
if ($arry['name'] == 'city')
{
foreach ($arr['options'] as $option)
{
echo $option . '<br />';
}
}
}
Достаточно?