将PHP中的多维数组与foreach get错误混淆


confusing multidimensional array in php with foreach getting error

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

错误:

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

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

$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_services3.如何在foreach的帮助下打印4. 上面的数组是4维的??????

要循环遍历这种数组,需要某种递归性。

我通常在for each中调用函数。该函数测试当前元素是否为数组。如果是,函数调用自己。如果不是,则函数执行任何操作(回显示例中的值)。

类似:

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;   
}

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

例如,你有两个不同的列表,一个用于杂货店购物,一个用于日常任务。

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

如果你想检查数组的所有层次,你应该使用嵌套循环。例如,您可以使用foreach,它将迭代数组的第一层。

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

如你所见,这个循环返回另一个循环。因此,如果您需要列出杂货[]数组中的所有项目,则需要在该数组中再次迭代。

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

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