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