【问题标题】:confusing multidimensional array in php with foreach getting error将php中的多维数组与foreach混淆
【发布时间】:2015-10-10 18:04:57
【问题描述】:

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

错误:

注意:第 9 行 C:\xampp\htdocs\example\basic\foreach2.php 中的数组到字符串转换 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']);

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

【问题讨论】:

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


【解决方案1】:

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

我通常在 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;   
}

【讨论】:

    【解决方案2】:

    您可以在 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] 到达你的杂货列表的第一个元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      • 2012-05-01
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      相关资源
      最近更新 更多