【发布时间】:2014-08-25 07:19:50
【问题描述】:
我想打印一个我不知道数组值维度的数组。
现在的事实是,当我使用echo '<pre>' 和print_r($array) 时,它将显示Key 和value 以及<br> 显示。
但我只想显示数组的值而不是键。 $array 可能包含多维数组值或单个值或两者兼有。
【问题讨论】:
-
如果您的数组中有多个键/值,您想显示全部还是只显示一个?
我想打印一个我不知道数组值维度的数组。
现在的事实是,当我使用echo '<pre>' 和print_r($array) 时,它将显示Key 和value 以及<br> 显示。
但我只想显示数组的值而不是键。 $array 可能包含多维数组值或单个值或两者兼有。
【问题讨论】:
你必须使用递归函数:
$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>';
}
}
}
【讨论】:
试试这个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
【讨论】:
简而言之,您可以使用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
(
)
【讨论】: