在数组中显示数组?

时间:2010-11-16 23:47:54

标签: php arrays multidimensional-array

我在数组中有一个数组,我想简单地打印出它的内容......问题是我正在尝试的不起作用...即

        foreach($retval as $k=>$v){

          if (is_array($v)){

            foreach($v as $l=>$w){

            echo $l . ' = ' . $w . '<br />';

            }

        } else {

          echo $k . ' = ' . $v . '<br />';

        }

这样做但我最终得到:

id = 2

name = Speakers

form_field =隐藏

display_order = 0

groups = Array

所以我没有在内部数组中得到一个foreach ..我做错了什么?实际上,当我非常确定只有'groups'是一个数组时,我的代码认为所有返回都是一个数组。


数组的结构如下所示:

array ( 0 => array ( 'id' => 2, 'name' => 'Speakers', 'form_field' => 'hidden', 'display_order' => '0', 'groups' => array ( 0 => array ( 'bit' => '1', 'name' => 'don', 'display_order' => '4', 'subscribers' => 8, ), 1 => array ( 'bit' => '2', 'name' => 'tyler', 'display_order' => '5', 'subscribers' => 0, ), 2 => array ( 'bit' => '4', 'name' => 'stephen', 'display_order' => '6', 'subscribers' => 0, ), 3 => array ( 'bit' => '8', 'name' => 'daniel', 'display_order' => '7', 'subscribers' => 0, ), 4 => array ( 'bit' => '16', 'name' => 'william', 'display_order' => '8', 'subscribers' => 0, ), 5 => array ( 'bit' => '32', 'name' => 'bobbys', 'display_order' => '9', 'subscribers' => 0, ), ), ), )

长话短说,我实际上只是试图搜索整个事物,说出'bobby'这个名称,并且对于该值是否存在于那里的任何地方都会得到一个简单的真或假。

5 个答案:

答案 0 :(得分:3)

print_r($myArray);

PHP Manual

<?php
    $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));
    print_r ($a);
?>

会给:

Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )
)

不确定这是否是你要找的......

print_r()为您提供可视化表示,而var_export()返回有效的可执行php代码。 Manual: var_export()

答案 1 :(得分:1)

当假设$retval[<something>]['groups']也是一个数组时,你假设数组只是双嵌套的。使用递归来处理这个问题,而不是仅仅在级别上添加级别。

答案 2 :(得分:1)

使用RecursiveArrayIterator中包含的RecursiveIteratorIterator。语法将是:

$arr = array('this is your complicated multi-dimensional array');
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr));
foreach($iterator as $key => $value){
    echo '['.$key.'] => '.$value.'<br />';
}

您甚至可以使用$iterator->depth()来确定当前元素的深度。

答案 3 :(得分:1)

听起来你需要重新考虑你想要做的事情。

如果您只想查看数组中的内容,以便了解如何获取特定数据,那么您可能会在print_r,var_export或类似内容之后进行操作。

print_r($retval);

如果你希望你的php脚本能够自己解决它是否在阵列中的'bobby',那么你可能会有更多的信息来帮助你进行搜索。例如,您是否知道数组的结构以及您正在搜索名称?如果是这样,那么你只需要检查$ array [$ foo] ['name']中的字符串。您可以像这样调整代码:

foreach($retval as $k=>$v) {
    if ($v['name'] == 'bobby') {
        echo "Bobby is at index $k";
    }
}

PHP包含lots of functions for arrays,尽管这些通常用于单维数组。

P.S。请编辑数组的结构以便于阅读。

答案 4 :(得分:1)

如果你的目标是了解某个值是否在任何嵌套数组中,你可以这样做:

foreach($retval as $vec){
    if(in_array("bobby", $vec)
        do something