Php 使用数组映射来替代打印以生成';清洁剂&x27;输出

Php 使用数组映射来替代打印以生成';清洁剂&x27;输出,php,array-map,Php,Array Map,我需要一个比打印更干净的输出 阵列状 $array = array(1,2,3,"four"=>array(4.1,4.2)); 应该打印出这样的东西吗 0: 1 1: 2 2: 3 [four] 0: 4.1 1: 4.2 我已经想到了这个,但是数组映射并没有返回我所期望的结果 function print_array($array) { $string = ""; foreach ( $array as $key => $value ) {

我需要一个比打印更干净的输出

阵列状

$array = array(1,2,3,"four"=>array(4.1,4.2));
应该打印出这样的东西吗

0: 1
1: 2
2: 3
[four]
0: 4.1
1: 4.2
我已经想到了这个,但是数组映射并没有返回我所期望的结果

function print_array($array) {
    $string = "";

    foreach ( $array as $key => $value ) {
        if (is_array ( $value )) {
            $string .= "[" . $key . "]\r\n" . array_map ( 'print_array', $value );
        } else {
            $string .= $key . ": " . $value . "\r\n";
        }
    }
    return $string;
}
这个函数的输出是

0: 1
1: 2
2: 3
[four]
Array

我的数组映射使用显然是错误的,有人能告诉我吗?

使用此函数可能会帮助您,如果值是数组,则递归调用您的函数

<?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));
?>

这种打印方式实际上不需要
array\u 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);

当然可以,谢谢。有时候你只是被一个简单的问题蒙蔽了双眼。
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);