我有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错误并显示未定义的索引并打印所有错误以及正确答案。
我只想避免数组超出绑定错误。请帮助我
答案 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
数组中的索引。