迭代3个不同长度的循环 - PHP

时间:2016-10-17 07:28:05

标签: php arrays

我有2个阵列,我希望在比较2个阵列后制作第3个阵列。代码如下:

foreach($allrsltntcatg as $alltests)
{
  foreach($alltests as $test)
  {
    foreach($allCatgs as $catg)
    {
      if($catg['testcategoryid'] == $test['testcategory_testcategoryid'])
      {
         $catcounts[$catg['testcategoryname']] +=1;
      }
    }
  }
}

虽然它返回了正确的答案,但它也会生成一个PHP错误并显示未定义的索引并打印所有错误以及正确答案。

我只想避免数组超出绑定错误。请帮助我

3 个答案:

答案 0 :(得分:1)

问题在于条件是否正确,如下所示:您必须先初始化数组,然后才能增加值

if($catg['testcategoryid'] == $test['testcategory_testcategoryid'])
{
    if (isset($catcounts[$catg['testcategoryname']]))
         $catcounts[$catg['testcategoryname']] +=1;
    else
         $catcounts[$catg['testcategoryname']] =1;
}

答案 1 :(得分:0)

当数组尝试在$catg['testcategoryname']数组中添加未定义索引(如$catcounts)的某些算术运算时,会生成警告。在添加数字之前,您必须检查索引是否存在,而不是,然后只需指定值,否则添加到其中。

这样做只是条件 -

if(....){
    if(array_key_exists($catg['testcategoryname'], $catcounts))
        $catcounts[$catg['testcategoryname']] +=1; // Add into it
    else
        $catcounts[$catg['testcategoryname']] = 1; // Assign only

}

有关数组键的更多信息 - See more

答案 2 :(得分:0)

$catg['testcategoryname']应代表$catcounts数组中的索引。