Отредактированный вывод двумерного массива
Есть двумерный массив состоящий из цифр
[[45, 16, 18, 72], [23, 8, 9, 36, 15, 36]]
Хочу вывети его, при этом вывести так, как он выглядит в редакторе кода, вот так
[[ 45 16 18 72 ], [ 23 8 9 36 15 36 ]]
Для решения задачи использую цикл for. Пробовал и цикл foreach- не вышло, только такое выходило вывести [[ 45 16 18 72 23 8 9 36 15 36 ]]
Вот решение циклом for:
echo 'echo: $twoDimensionalArrays = [[ ';
for ($i = 0; $i < count($twoDimensionalArrays); $i++) {
for ($j = 0; $j < count($twoDimensionalArrays[$i]); $j++) {
if ($j == count($twoDimensionalArrays[0])) echo ' ], [ ';
echo ' ' . $twoDimensionalArrays[$i][$j];
}
}
}
echo ' ]];';
Выводится следующий результат
echo: $twoDimensionalArrays = [[ 45 16 18 72 23 8 9 36 ], [ 15 36 ]];
Как подправить код, чтоб выводило именно вот так?
echo: $twoDimensionalArrays = [[ 45 16 18 72 ], [ 23 8 9 36 15 36 ]];
Ответы (3 шт):
У Вас какое-то непонятное условие if ($j == count($twoDimensionalArrays[0])), которое тут вообще не должно проверяться. Следующий вариант будет верным:
<?php
$twoDimensionalArrays = [[45, 16, 18, 72], [23, 8, 9, 36, 15, 36]];
echo 'echo: $twoDimensionalArrays = [[';
for ($i = 0; $i < count($twoDimensionalArrays); $i++) {
for ($j = 0; $j < count($twoDimensionalArrays[$i]); $j++) {
echo ' ' . $twoDimensionalArrays[$i][$j];
}
if($i !== count($twoDimensionalArrays)-1) {
echo ' ], [';
}
}
echo ' ]];';
Вот так применил implode(), получилось лучше, чем хотел
Отдельное спасибо Ипатье'у за идею попытаться хотя бы использовать implode()
Так же u_mulder'у за решение проблемы вывода [ ] для каждого вложенного массива
$twoDimensionalArrays = [[45, 16, 18, 72], [23, 8, 9, 36, 15, 36]];
foreach ($twoDimensionalArrays as $twoDimensionalArray) {
$arrayString[] = '[' . implode(', ', $twoDimensionalArray) . ']';
}
echo "echo: \$twoDimensionalArrays = [" . implode(', ', $arrayString) . "];<br>";
Выводится следующий результат
echo: $twoDimensionalArrays = [[45, 16, 18, 72], [23, 8, 9, 36, 15, 36]];
Делов на 5 строчек:
$a = [[45, 16, 18, 72], [23, 8, 9, 36, 15, 36]];
$parts = [];
foreach ($a as $subarray) {
$parts[] = '[ ' . implode(' ', $subarray) . ' ]';
}
echo '[' . implode(', ', $parts) . ']';
Фидл.