令人困惑的多维数组在PHP与foreach获取错误

时间:2015-10-10 18:04:58

标签: php arrays for-loop multidimensional-array foreach

多维数组(2D,3D或多维数组中的限制是什么)和foreach()的用途是什么? foreach()用于在数组内打印值? 在多维数组的情况下,为什么嵌套循环很重要?

错误:

  

注意:第9行的C:\ xampp \ htdocs \ example \ basic \ foreach2.php中的数组到字符串转换   Arrayarray(3){[0] => int(4)[1] => int(5)[2] => int(7)}

     

注意:第11行 C:\ xampp \ htdocs \ example \ basic \ foreach2.php中的数组到字符串转换

$items = array(1,2,3,
      array(4,5,7
     ),
     8,54,4,5,5);
foreach($items as $key => $value)
{
   echo $value;
   var_dump($value);
   echo $key ."pair match".$value . "<br>";
}

我如何访问此阵列?

      $a_services = array(
        'user-login' => array(
          'operations' => array(
            'retrieve' => array(
              'help' => 'Retrieves a user',
              'callback' => 'android',
              'file' => array('type' => 'inc', 'module' => 'android_services'),
              'access callback' => 'services',
              'args' => array(
                array(
                  'name' => 'phone_no',
                  'type' => 'string',
                  'description' => 'The uid ',
                  'source' => array('path' => 0),
                  'optional' => FALSE,
                ),
              ),
            ),
          ),
         ),
        );
  print_r($a_services['$android_services ']['user-login']['operations']['retrieve']['callback']);
 print_r($a_services['$android_services ']['user-login']['operations']['retrieve']['callback']['args']['name']);

错误1.注意:数组转换为字符串 2.未定义的索引:$ android_services 3.如何在foreach的帮助下打印 4.上面的数组是4维??????

2 个答案:

答案 0 :(得分:0)

要遍历这种数组,你需要某种递归。

我通常在每个内部调用一个函数。该函数测试当前元素是否为数组。如果是这样,函数会自行调用。如果不是,则函数执行任何操作(回显示例中的值)。

类似的东西:

foreach($a_services as $key => $value) {
    do_your_thing($value);
}

function do_your_thing($recvalue)
{
    if (is_array($recvalue))
    {
        foreach($recvalue as $key => $value) 
        {
            do_your_thing($value);
        }
    }
    else
    {
        echo $recvalue;
    }
    return $recvalue;   
}

答案 1 :(得分:0)

您可以在PHP中定义多维数组(包括其他数组的数组)。

例如,您有2个不同的列表,一个用于购物,一个用于日常任务。

$lists = array(
    'grocery' => array('banana', 'apple'),
    'tasks' => array('go to work', 'wash dishes'),
);

如果要检查所有级别的数组,则应使用嵌套循环。例如,您可以使用foreach,它将在第一级迭代数组。

foreach($lists as $list)
    return $list; // returns grocery[] and tasks[]

当你看到这个循环返回其他循环时。因此,如果您需要列出所有grocery []数组项,则需要在此数组中再次迭代。

foreach($lists as $list)
    foreach($list as $k => $l)
        if($k == 'grocery')
            echo $l; // echos "banana","apple"

嵌套循环对于达到多维数组内容很重要(也是必要的),特别是如果您不知道数组的结构。这些循环将为您找到所有数组项。但是,如果你知道结构,你可以直接使用$lists['grocery']到杂货店阵列或$lists['grocery'][0]到达你的购物清单的第一个元素。