Как перебрать многомерные массивы с различной длиной - PHP - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь перебрать многомерный массив.Подмассив каждого массива имеет различное количество значений.Как бы я прошел через это, чтобы вывести элемент списка для значения каждого автомобиля?

$cars = array (
        array("Volvo",1,2,3),
        array("BMW",4,5),
        array("Saab",6,7,8,9),
        array("Land Rover",10),
);

$carsLength = count($cars);
for ($row = 0; $row < $carsLength; $row++) {
    echo "<p><b>Row number $row</b></p>";
    echo "<ul>";
        $listLength = count($bullet);
        for ($bullet = 0; $bullet < $listLength; $bullet++) {
            echo "<li>".$cars[$row][$bullet]."</li>";
        }
    echo "</ul>";
}

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Код может быть еще более упрощен с помощью только foreach и взрыва.

Implode создает строку из массива с «клеем» между ними.

$cars = array (
        array("Volvo",1,2,3),
        array("BMW",4,5),
        array("Saab",6,7,8,9),
        array("Land Rover",10),
);

foreach($cars as $row => $sub){
    echo "<p><b>Row number " . ($row +1) . "</b></p>\n";
    echo "<ul>\n";
    echo "<li>" . implode("</li><li>", $sub) . "</li>\n";
    echo "</ul>\n\n";
}

Вывод:

<p><b>Row number 1</b></p>
<ul>
<li>Volvo</li><li>1</li><li>2</li><li>3</li>
</ul>

<p><b>Row number 2</b></p>
<ul>
<li>BMW</li><li>4</li><li>5</li>
</ul>

<p><b>Row number 3</b></p>
<ul>
<li>Saab</li><li>6</li><li>7</li><li>8</li><li>9</li>
</ul>

<p><b>Row number 4</b></p>
<ul>
<li>Land Rover</li><li>10</li>
</ul>

https://3v4l.org/aTYKg

1 голос
/ 21 июня 2019

Вам необходимо указывать, что ведение индекса не требуется,

foreach ($cars as $key => $value) {
    echo "<p><b>Row number $key</b></p>";
    echo "<ul>";
    foreach ($value as $value1) {
        echo "<li>" . $value1 . "</li>";
    }
    echo "</ul>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...