2012-02-19 11 views
0

連想配列を呼び出そうとしていますが、なぜこれが機能しないのか混乱しています。連想配列の表示が機能しない

Array(
[e7a36fadf2410205f0768da1b61156d9] => Array(
     [rowid] => e7a36fadf2410205f0768da1b61156d9 
     [id] => 3 
     [qty] => 1 
     [price] => 20 
     [name] => test 
     [options] => Array(
       [permName] => large 
      ) 
     [subtotal] => 20 
    ) 
) 

が、私は$test[0]["rowid"];を行う場合には、次のエラーメッセージが表示できます::不定オフセット:

私はそれをprint_r($test);場合には、以下を示し0

を私はまだPHPの初心者ですが、私が持っているものから今までのところこれがうまくいくはずの配列について学んだ。何か案は?

おかげ

答えて

3

あなたの配列がそう$test[0]が存在しない連想です。あなたがキーを参照することなく、最初の要素を取得したい場合は

$test['e7a36fadf2410205f0768da1b61156d9']['rowid'] 

次の2つの例は同じ機能ですreset($test)

$first_element = reset($test); 
$first_element['row_id']; 

を使用することができます。

+0

母、持っていないこと、あなたのオリジナルの答えでは、あなたの可能性安全な私は数ストライキキーボードで。彼はいつも 'key()'で参照キーを得ることができます、それは言及する価値があると思います。とにかく+1。 – Vyktor

+0

これはばかげた質問ですが残念ですが、連想配列でも0,1,2を使用できるという印象を受けました。私が間違っていると言っても大丈夫ですか? – Claremont

+0

@Claremont正解です。整数値を使用して連想配列のN番目の値にアクセスすることはできません。例外は、自分で設定した場合です(つまり、 'array( 'foo' => 'bar'、0 => 'myVar')))。もしあなたが本当に望むのであれば、 '$ test = array_values($ test);'を使ってキーをダンプして再入力することができます。次に、 '$ test [0]'、 '$ test [1]'などにアクセスすることができます –

1

あなたのアウトアレイはキー "e7a36fadf2410205f0768da1b61156d9"を持っているようです。

だから、あなたはあなたがどちらかがキー$test['e7a36fadf2410205f0768da1b61156d9']['rowid'] as [Mike B suggested][1]. Or get first element of array with [リセットを() `を使用することができます最初の非数値キーが

0

が何であるかを知りたい場合にもarray_keysを使用することができます

$test["e7a36fadf2410205f0768da1b61156d9"]["rowid"] 

] 2を使用する必要があります:

$element = reset($test); 
$element['rowid']; 

それとも、後でそれらのキーで動作する必要があります場合は、常にCを得ることができます(array_keys()を使用key()とurrentキー):

$keys = array_keys($test); 
$test[ $keys[0]]['rowid']; 

そして、あなたがテストですべてのレコードを参照する必要がある場合にだけ使用しforeach

foreach($test as $key => $item){ 
    $item['rowid']; 
}