无任何键的多维数组值打印

时间:2014-08-25 07:19:51

标签: php arrays foreach

我想打印一个数组,我不知道数组值的大小。 现在的事实是,当我使用echo '<pre>'然后print_r($array)时,它会显示Keyvalue并显示<br>。 但我想只显示值而不是数组的键。 $array可能包含多维数组值或单个值或两者。

3 个答案:

答案 0 :(得分:4)

你必须使用递归函数:

$array_list = array('a',array(array('b','c','d'),'e')); // Your unknown array
print_array($array_list);
function print_array($array_list){
    foreach($array_list as $item){
        if(is_array($item)){
            print_array($item);
        }else{
            echo $item.'<br>';
        }
    }
}

答案 1 :(得分:4)

尝试此Recursive功能

function print_array($array, $space="")
{
    foreach($array as $key=>$val)
    {
        if(is_array($val))
        {
            $space_new = $space." ";
            print_array($val, $space_new);
        }   
        else
        {
            echo $space." ".$val." ".PHP_EOL;
        }
    }
}

参见 Demo

答案 2 :(得分:3)

简而言之,您可以使用recursive function来实现您想要达到的目标:

function print_no_keys(array $array){
    foreach($array as $value){
        if(is_array($value)){
            print_no_keys($value);
        } else {
            echo $value, PHP_EOL;
        }
    }
}

另一种方法是使用array_walk_recursive()


如果你想使用缩进,那么试试这个:

function print_no_keys(array $array, $indentSize = 4, $level = 0){
    $indent = $level ? str_repeat(" ", $indentSize * $level) : '';

    foreach($array as $value){
        if(is_array($value)){
            print_no_keys($value, $indentSize, $level + 1);
        } else {
            echo $indent, print_r($value, true), PHP_EOL;
        }
    }
}

示例:

<?php
header('Content-Type: text/plain; charset=utf-8');

$a = [1, [ 2, 3 ], 4, new stdClass];

function print_no_keys(array $array, $indentSize = 4, $level = 0){
    $indent = $level ? str_repeat(" ", $indentSize) : '';

    foreach($array as $value){
        if(is_array($value)){
            print_no_keys($value, $indentSize, $level + 1);
        } else {
            echo $indent, print_r($value, true), PHP_EOL;
        }
    }
}

print_no_keys($a);
?>

<强>输出:

1
    2
    3
4
stdClass Object
(
)