Использование карты массива для создания альтернативы печати r для получения "чистого" вывода
Мне нужен более чистый вывод, чем print_r дает мне
Массив, подобный
$array = array(1,2,3,"four"=>array(4.1,4.2));
Следует распечатать что-то вроде этого
0: 1
1: 2
2: 3
[four]
0: 4.1
1: 4.2
Я придумал это, но array_map не возвращает то, что я ожидал
function print_array($array) {
$string = "";
foreach ( $array as $key => $value ) {
if (is_array ( $value )) {
$string .= "[" . $key . "]rn" . array_map ( 'print_array', $value );
} else {
$string .= $key . ": " . $value . "rn";
}
}
return $string;
}
Выход из этого -
0: 1
1: 2
2: 3
[four]
Array
Мое использование array_map, очевидно, неправильно может кто-нибудь просветить меня?
2 ответа:
Используйте это, это может помочь вам, вызвать вашу функцию рекурсивно, если значение является массивом.
<?php function print_array($array) { $string = ""; foreach ( $array as $key => $value ) { if (is_array ( $value )) { $string .= "[" . $key . "]\r\n" . print_array($value ); } else { $string .= $key . ": " . $value . "\r\n"; } } return $string; } $array = array(1,2,3,"four"=>array(4.1,4.2)); print_r(print_array($array)); ?>
Вывод
0: 1 1: 2 2: 3 [four] 0: 4.1 1: 4.2
Этот способ печати на самом деле не нуждается в
array_map
. Следующая часть использует большую часть вашей собственной функции. Он не проверен, но должен помочь вам в правильном направлении.function print_array($source) { $string = ""; foreach ($sorce as $key => value) { if (is_array($value)) { $string .= $key . ": array (\r\n"; $string .= print_array($value); $string .= ")\r\n"; } else { $string .= $key . ": " . $value . "\r\n"; } } return $string; } echo print_array($myArray);