概要
エラーTipsその1。
エラー内容
配列またはオブジェクトをキーとして使用することはできません。
これを行なうと、warning: Illegal offset type が発生します。
前提
- PHPの配列に関するエラー
- 配列のキーには「文字列」か「整数」しか指定できない
よくある原因
foreach と for 文の勘違い
実際にあったミス
なんか変なの配列のキーにつけちゃった→キーが配列扱い
間違い1
// 間違い
$sample = array(
['test'] => 'test' // 配列扱い
);
// 本来
$sample = array(
'test' => 'test'
);
これは単純にキーを配列に指定してしまっているというミスなので、大体の場合はキーの文字列「test」を囲んでいる「[」と「]」を取れば良い。
配列のキーに配列を指定してしまった→これも同じくキーが配列扱い
間違い2
$data = array(
array('foo') => 'bar'
);
これも間違い1と同様、キーを配列にしてしまっているミスなので、大体の場合はキーを文字列「foo」にしてあげれば良い。
配列のキーにオブジェクトを指定してしまった→キーがオブジェクト扱い
間違い3
$this->tableToModel[$this->table] = $this->alias;
cakePHPとかでありそうな間違いで「$this->table」がオブジェクトとなる。
オブジェクトではなく、この場合だとテーブル名を取得して入れてあげれば良い。