数组中的非法偏移量

时间:2011-10-24 07:35:47

标签: php

我正在尝试使用另一个循环检查数组。

     for(   $i=0;$i<count($allCheckBoxId);$i++  )       {
        if( $allCheckBoxId[$i] != ''){
            unset( $contactlist[$cntctnum] );
            }
     }   

我已将$ allCheckBoxId命名为contactnumber作为值。第二个数组我将$ contactlist命名为contactnumber作为关键元素。

对于特定条件,我正在检索第一个数组的值。意味着我会在第一个数组中将contactnumber作为值检索。如果它不为null我将使用值contactnumber取消设置第二个元素。但它在unset( $contactlist[$cntctnum] );上给我的错误为未设置的非法偏移类型

2 个答案:

答案 0 :(得分:6)

这是有趣的部分。
你知道,编程不只是编写代码 大部分时间编程正在寻找错误。不是通过在stackoverflow上提问,而是通过修改代码并研究它的输出和错误消息。某种调查。

如果你有这样的错误信息,这是不是意味着偏移类型的某些错误?为什么不打印问题变量?只打印出来:

 for(   $i=0;$i<count($allCheckBoxId);$i++  )       {
    var_dump($cntctnum);
    var_dump($allCheckBoxId[$i]);
    var_dump($contactlist[$cntctnum]);
    if( $allCheckBoxId[$i] != ''){
        unset( $contactlist[$cntctnum] );
    }
 }  

并查看偏移

特别错误

答案 1 :(得分:4)

尝试将密钥转换为字符串。替换:

$contactlist[$cntctnum]

使用

$contactlist[(string) $cntctnum]

for(   $i=0;$i<count($allCheckBoxId);$i++  )       {
    if( $allCheckBoxId[$i] != ''){

        $key = (string) $cntctnum;
        unset( $contactlist[$key] );

    }
}  

PHP关联数组,从PHP 5.4开始,如果您使用字符串以外的其他内容作为键,则会发出PHP警告:非法偏移类型。

此外,如果这没有帮助,请转到PHP Array Manual并为“非法偏移类型”执行 Ctrl / Cmd + F