0

配列で奇妙な状況に直面しています.LinkedIn APIを使用して、2つの形式でデータを返すプロファイル情報を取得しています..

ユーザーが教育アイテムを 1 つだけ持っている場合

educations=>education=>school-name
educations=>education=>date
...

教育項目が複数ある場合

educations=>education=>0=>school-name
educations=>education=>0=>date
...
educations=>education=>1=>school-name
educations=>education=>1=>date
...

今、私はそれを一貫して変換しようとしています

educations=>education=>school-name

educations=>education=>0=>school-name

しかし、動作すると思われるコードでエラーが発生する

if(empty($educations['education'][0]['school-name']))
{
    $temp = array();
    $temp['education'][0]=$educations['education'];
    $educations = $temp;
}

これは「1 つの教育項目のみ」では失敗し、(isset,is_array および empty) の最初の行でエラーが生成されます。

PHP Fatal error:  Cannot use string offset as an array in ...

print_r が返す

[educations] => Array
    (
        [education] => Array
            (
                     [id] => 109142639
                     [school-name] => St. Fidelis College
                     [end-date] => Array
                         (
                             [year] => 2009
                         )

            )

    )
4

4 に答える 4

2

通常、課題は次のように記述します。

$temp = array(
    "education" => array($educations['education'])
);

インデックスに関する問題を回避するため。これはあなたのものも修正するかもしれません。

内容がわからない場合は、$educations['education'][0]['school-name']各部分を簡単に確認できます。

if(isset($educations['education'], $educations['education'][0], $educations['education'][0]['school-name']))

これは、通常の関数のように動作isset しないため機能します。複数の引数を遅延して受け取ります。

于 2013-04-08T16:35:31.410 に答える
1

あなたがしたい:

if(array_key_exists('school-name',$educations['education']))
{
    $educations['education'] = array($educations['education']);
}
于 2013-04-08T16:36:07.573 に答える
0

ループを実行していて、ループが壊れた場合のヒントを次に示します。

if( $myArray != "" ){
  // Do your code here 

  echo $myArray['some_id'];
}

于 2014-12-03T20:10:04.623 に答える