こんにちは、さち です。
先日、PHP のコーディングをしていたんですが、「配列」を「セッション」に保存しようとすると「警告(エラー)」が出ていまい上手くいかないことがありました。
「警告(エラー)」の内容を書き起こすとこんな感じ。
Warning: Unknown: Skipping numeric key 0 in Unknown on line 0
知らないとハマってしまう内容だったので、備忘録としてこの記事を残しておきます。同じことで困っている方のお役に立てれば幸いです。
遭遇した問題
PHP のデータを他のページでも使えるようにするため、セッション $_SESSION
に保存して引き継ごうとしましたが、エラーが出てしまいました。
具体的には、次のような感じです。
- 「配列」を作って「セッション」に保存する PHP です。
$suribu = ['Kozue', 'Kaho', 'Ginko']; session_start(); $_SESSION = $suribu;// 配列をセッションに保存
- しかし、この PHP を実行すると、下記のような「警告(エラー)」が出てしまいます。
Warning: Unknown: Skipping numeric key 0 in Unknown on line 0
Warning: Unknown: Skipping numeric key 1 in Unknown on line 0
Warning: Unknown: Skipping numeric key 2 in Unknown on line 0
この「警告(エラー)」が原因で、他のページから「セッション」を読み込むこともできません。
解決方法
問題の原因
原因は、「配列」を直接「セッション」に保存しようとしたことです。
「セッション」の最上位階層では「文字列」をキーとする「連想配列」しか使えません。上記の例では、「数値」をキーとする「配列」を使ったので問題(警告)が出てしまったわけです。
これは PHP の基礎知識のようですが、「セッション」をはじめて使ったのでこの仕様を知りませんでした……。
修正後のコード
「配列」を直接「セッション」に保存するのではなく、連想配列の値として保存します。
実際に上記のコードを修正すると下記のような感じ。「配列」を $_SESSION['suribu']
に保存するようにしました。
$suribu = ['Kozue', 'Kaho', 'Ginko']; session_start(); $_SESSION['suribu'] = $suribu;// セッションに配列を保存
これで「警告(エラー)」が出なくなり、「セッション」への保存が正常にできるようになりました。
コメント