Cake PHP:未定义的偏移错误

时间:2012-07-31 12:43:11

标签: php debugging cakephp

我是Cake PHP的新手。我正在尝试运行我最近下载的应用程序,但它不起作用。

我的debug.log文件说:     2012-07-31 12:31:47调试:注意事项(8):[C:\ wamp \ www \ app \ models \ vwbrowse.php,第78行]中未定义的偏移量:0

我的error.log文件:     2012-07-31 12:31:47警告:警告(2):array_keys()期望参数1为数组,在[C:\ wamp \ www \ app \ models \ vwbrowse.php,第78行]中给出null / p>

最后这是导致问题的功能:

function afterFind($results, $primary)
{
    if(!$primary) return $results;

    $ret = array();

    //we are primary and not part of an associated find
    if(!is_array($results)) //find first
    {
        $tables = array_keys($results);
        $record = array();
        foreach($tables as $table){
            $record = array_merge($record,$result[$table]);
        }
        $ret['Vwbrowse'] = $record;

    }else{ //merge all arrays if separated
        $tables = array_keys($results[0]);
        foreach($results as $result){
            $record['Vwbrowse'] = array();
            foreach($tables as $table){
                $record['Vwbrowse'] = array_merge($record['Vwbrowse'],$result[$table]);
            }
            $ret[] = $record;
        }
    }

    return $ret;
}

**这是第78行:$ tables = array_keys($ results [0]); **

有什么问题?提前感谢您的解决方案。

2 个答案:

答案 0 :(得分:2)

您正在检查$results 是否一个数组,然后告诉您的脚本对其执行array_keys()。不计算。

此外,您尝试访问$results[0]而未确认0索引存在。

首先尝试:

if (array_key_exists(0, $results)) { ... }

答案 1 :(得分:0)

undefined index错误表明数组的索引(在您的情况[0]中)未定义。

您正在检查$results是否为if (!is_array($results))的数组,但如果它有任何数据则不会。尝试将其更改为if (!is_array($results) || (count($results) == 0))