1. ホーム
  2. php

[解決済み] phpで発生した `Illegal string offset` エラーを修正する方法は?

2022-01-26 17:01:59

質問

以下のような多次元配列があります。

$rows[] = $row;

さて、この配列をループして変数を作りたいと思います。試してみたところ、こんな感じでした。

foreach ($rows as $k => $value) {
  //echo '<pre>',print_r($value).'</pre>';
  $id    = $value['news_id'];
  $title = $value['news_title'];
  echo $title; 
}

しかし、以下のようなエラーが発生します。

...... 不正な文字列オフセット 'news_id' です。

これは、- の出力です。 echo '<pre>',print_r($value).'</pre>';

Array
(
    [news_id] => 1110
    [news_title] => test
    [news] => test des
)
1

Array
(
    [news_id] => 1109
    [news_title] => ශ්‍රී ලංකාවේ ප්‍රථම....
    [news] => දහසක් බාධක....
)
1

どなたか、私のやったことのどこが悪いのか、教えてください。

アップデイト を出力します。 echo '<pre>',print_r($rows).'</pre>';

Array
(
  [0] => 
  [1] => Array
      (
          [news_id] => 1110
          [news_title] => test
          [news] => test des
      )

  [2] => Array
      (
          [news_id] => 1109
          [news_title] => ශ්‍රී ලංකාවේ ප්‍රථම....
          [news] => දහසක් බාධක....        
      )

)
1

解決方法は?

使用 isset において0インデックスが空であるため $row

foreach ($rows as $k => $value) {
  if(isset($value['news_id'])){
    $id    = $value['news_id'];
    $title = $value['news_title'];
    echo $title; 
  }

}

にデータを代入する際には、チェック(条件)を追加する必要があります。 $rows