【PHP】 「セッション」に「配列」を保存するとエラーが出るときの対処法

この記事は約3分で読めます。
記事内に広告が含まれています

コーディングのイメージ

こんにちは、さち です。

先日、PHP のコーディングをしていたんですが、「配列」を「セッション」に保存しようとすると「警告エラー)」が出ていまい上手くいかないことがありました。

「警告(エラー)」の内容を書き起こすとこんな感じ。

Warning: Unknown: Skipping numeric key 0 in Unknown on line 0

知らないとハマってしまう内容だったので、備忘録としてこの記事を残しておきます。同じことで困っている方のお役に立てれば幸いです。

スポンサーリンク

遭遇した問題

PHP のデータを他のページでも使えるようにするため、セッション $_SESSION に保存して引き継ごうとしましたが、エラーが出てしまいました。

具体的には、次のような感じです。

  1. 配列」を作って「セッション」に保存する PHP です。
    $suribu = ['Kozue', 'Kaho', 'Ginko'];
    
    session_start();
    $_SESSION = $suribu;// 配列をセッションに保存
  2. しかし、この 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;// セッションに配列を保存

これで「警告(エラー)」が出なくなり、「セッション」への保存が正常にできるようになりました。

コメント

タイトルとURLをコピーしました