Отредактированный вывод двумерного массива

Есть двумерный массив состоящий из цифр [[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 шт):

Автор решения: Vladimir Gonchar

У Вас какое-то непонятное условие 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 ' ]];';
→ Ссылка
Автор решения: Studying Again

Вот так применил 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]];

→ Ссылка
Автор решения: u_mulder

Делов на 5 строчек:

$a = [[45, 16, 18, 72], [23, 8, 9, 36, 15, 36]];

$parts = [];
foreach ($a as $subarray) {
    $parts[] = '[ ' . implode(' ', $subarray) . ' ]';
}
echo '[' . implode(', ', $parts) . ']';

Фидл.

→ Ссылка