2010-12-17 17 views
4

なぜ私のアレイが期待どおりに機能していなかったのか分かりませんでした。私は以下のコードと機能的に同じコードを使用していましたが、プログラムで私に黙って失敗していたので、同じタイプのデータと構文を使って孤立したテストケースを作成し、不正なオフセットタイプについてのエラーを受けました。PHP「警告:不正なオフセットタイプが...」アレイの問題が私を困惑させた

Warning: Illegal offset type in <file location>\example.php on line 12 
Warning: Illegal offset type in <file location>\example.php on line 16 

これらは、「$ questions [$ question]」への参照を含む2行です。

<?php 
    $questions = array(
     "訓読み: 玉"=>array("たま","だま"), 
     "訓読み: 立"=>array("たて","たち","たつ","たてる","だてる","だて"), 
    ); 

    $question = $questions["訓読み: 立"]; 

    if (is_array($questions[$question])){ 
     $res = $questions[$question][0]; 
    } else { 
     $res = $questions[$question]; 
    } 
    echo $res; 
?> 

私はキーとして使用することはできません「配列やオブジェクトを述べhttp://php.net/manual/en/language.types.array.phpに警告を見ることができますがので、私は、ここに私のスキルレベルを超えてだと思うの警告になりますそう。: Illegal offset type。 "、私は私がやっていることが非常にページ上の例#7とは何か違うのか分かりません。

ここで私の問題を理解して解決するのに役立つ説明を大変うれしく思います。

ありがとうございます!

答えて

0

私が見る限りマニュアルページにはありません。配列をキーとして使用することはできません。

2

$question = $questions["訓読み: 立"];を呼び出すと、その文字列で表される配列が返されます。あなたはそれがそのようになるはずですarray_key_exists
を使用してcallindのIS_ARRAY前に追加のチェックを行う必要があります警告を取り除くために

<?php 
    $questions = array(
     "訓読み: 玉"=>array("たま","だま"), 
     "訓読み: 立"=>array("たて","たち","たつ","たてる","だてる","だて"), 
    ); 

    $question = $questions["訓読み: 立"]; 

    if (is_array($question)){ 
     $res = $question[0]; 
    } else { 
     $res = $question; 
    } 
    echo $res; 
?> 
+0

はありがとう仕事をする必要があり、これは、その特定のコードスニペットで問題を解決して、私にこれがどのように機能するかにもう少し洞察力を与えます。残念ながら、もともと私が問題に遭遇した大きなコードはまだ動作しません... :(私はもう少し進歩を遂げることができるかどうか確認するためにそれを掘り起こしていきます。 –

1

:あなたは$質問[$の質問]を使用する場合は、あなただけの$の質問を使用する必要があります:

if (array_key_exists($question,$questions) && is_array($questions[$question])) 

それは

関連する問題