1

私はCake PHPの初心者です。最近ダウンロードしたアプリケーションを実行しようとしていますが、動作しません。

私の debug.log ファイルには次のように書かれています: 2012-07-31 12:31:47 Debug: Notice (8): Undefined offset: 0 in [C:\wamp\www\app\models\vwbrowse.php, line 78]

そして、私のerror.logファイル:2012-07-31 12:31:47警告:警告(2):array_keys()は、パラメーター1が配列であると予想し、nullは[C:\ wamp\www\app\models\vwbrowseで指定されます.php、78行目]

そして最後に、これは問題を引き起こす機能です:

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]); **

なにが問題ですか?解決策を事前に感謝します。

4

2 に答える 2

2

$results ISが配列ではないかどうかを確認してから、スクリプトに配列を実行するように指示しますarray_keys()。計算しません。

また、 thインデックスが存在する$results[0]ことを確認せずにアクセスしようとしています。0

最初にこれを試してください:

if (array_key_exists(0, $results)) { ... }
于 2012-07-31T12:45:26.350 に答える
0

undefined indexエラーは、配列のインデックスが[0]未定義であることを示しています。

$resultsがの配列であるかどうかを確認if (!is_array($results))していますが、データがあるかどうかは確認していません。に変更してみてくださいif (!is_array($results) || (count($results) == 0))

于 2012-07-31T12:45:27.380 に答える