Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的三维数组循环_Php_Arrays_Loops_Multidimensional Array - Fatal编程技术网

php中的三维数组循环

php中的三维数组循环,php,arrays,loops,multidimensional-array,Php,Arrays,Loops,Multidimensional Array,我有一个数组,如下所示: Array ( [0] => Array ( [id] => 39 [nume] => Ardeleanu [prenume] => Bogdan [crm] => Array ( ) ) [1] => Array ( [id] => 40 [nume]

我有一个数组,如下所示:

Array
 (
[0] => Array
    (
        [id] => 39
        [nume] => Ardeleanu
        [prenume] => Bogdan
        [crm] => Array
            (
            )

    )


[1] => Array
    (
        [id] => 40
        [nume] => Avram
        [prenume] => Corina
        [crm] => Array
            (
                [2014-02-27] => 2
                [2014-02-28] => 1
            )

    )
)
这是我的密码:

foreach ($newOrders as $crm) {
   foreach ($crm as $angajati) {
      foreach ($angajati['crm'] as $val) {
        echo $val;
      }
   }
}
我得到警告:

非法字符串偏移量“crm”


我遗漏了什么?

您试图在整个2级阵列上循环,但只有
crm
阵列的关键点。因此,您需要执行以下操作:

foreach ($newOrders as $crm) 
{
   if(isset($crm['crm']))
   {
     foreach ($crm['crm'] as $val) 
     {
          echo $val;
     }
   }
}

-如果要在
crm
键中获取值。它可能不存在,因此,我添加了
isset
check。

您试图在整个第二级阵列上循环,但仅将
crm
关键点添加到阵列中。因此,您需要执行以下操作:

foreach ($newOrders as $crm) 
{
   if(isset($crm['crm']))
   {
     foreach ($crm['crm'] as $val) 
     {
          echo $val;
     }
   }
}

-如果要在
crm
键中获取值。它可能不存在,因此,我添加了
isset
check。

它有帮助吗

foreach ($newOrders as $key=>$val) {
 if(array_key_exists("crm",$val) && count($val["crm"]) > 0 ){
   foreach($val["crm"] as $k=>$v){
     echo $k." = ".$v."<br />";
   }
 }
}
这样做是为了避免在缺少元素或数据数组不存在的情况下,在foreach中提供无效索引和无效参数等进一步的通知。

这有帮助吗

foreach ($newOrders as $key=>$val) {
 if(array_key_exists("crm",$val) && count($val["crm"]) > 0 ){
   foreach($val["crm"] as $k=>$v){
     echo $k." = ".$v."<br />";
   }
 }
}

这样做是为了避免在缺少元素或数据数组不存在时,在foreach中提供无效索引和无效参数等进一步通知。

+1。你可能还想解释你在做什么。添加了解释。我需要来自“crm”[2014-02-27]=>2[2014-02-28]=>1的值来进行mysql查询。所以我需要密钥和值。您的代码没有显示任何内容:(@user3387622此代码工作正常,您需要显示代码的不同之处。+1.您可能还需要解释您正在执行的操作。添加了解释。我需要来自“crm”[2014-02-27]=>2[2014-02-28]的值=>1用于mysql查询。所以我需要键和值。您的代码没有显示任何内容:(@user3387622此代码工作正常,您需要显示您的代码有何不同。您想回显什么?只是crm数组?或者您想打印所有内容?我需要这个[2014-02-27]=>2在下面添加一个答案。希望这就是你想要的。你想回应什么?只是crm阵列?还是你想打印所有东西?我需要这个[2014-02-27]=>2在下面添加一个答案。希望这就是你想要的。通过这个我得到了“未定义的索引:crm”。我已经添加了
isset
检查我得到的“未定义索引:crm”我添加了
isset
检查