2017-11-15 2 views
0

使用して、ネストされた連想配列へのアクセス:キーの値は、私は、ネストされた連想配列にアクセスしようとしているarray_keys(PHP)

$data = array('1'=>'value1','2'=>'value2','3'=>array('one','two')) 

を「3」配列です。

私は私の値のサイクルに必要があるので、私は与えられた配列のキーを抽出:今、私がアクセスしたい

foreach(range(1, 10) as $val): 
echo "key: ".$keys[$val]; 
echo "value: ".$data[$keys[$val]]; 
endforeach; 

$keys = array_keys($data); 

と関連付けられた値を取得するために使用します'3'に関連する値。 $data[$keys[$val]]を使用すると、値ではなく配列が返されるため、機能しません。

私の質問は:私は$data[$keys[$val]]に近い構文を使用して、値「1」に例えば、アクセスすることができますどのように?

+0

あなたは、配列を反復処理する方法のための具体的な理由はありますか?単純な 'foreach($ key => $ value){}'は同じ結果を達成します。 – Yoshi

答えて

1

値は文字列または配列であるかどうかをチェックするための条件を追加する必要があります。 文字列の場合はそれをエコーし​​ます。それ以外の場合は、その配列の最初の値にアクセスします(key = 0、 '1'が出力されます)。または、foreachループを使用して配列の値にアクセスします。

foreach(range(1, 10) as $val): 
echo "key: ".$keys[$val]; 
echo "value: "; 
if(is_array($data[$keys[$val]])){ //Is it an array? 

    //echo 'one' 
    echo $data[$keys[$val]][0]; 

    //or all the values with a loop 
    foreach($data[$keys[$val]] as $val2){ 
    echo $val2; 
    echo ","; 
    } 


} else { //it's not an array, we can simply echo it. 
    echo $data[$keys[$val]]; 
} 
endforeach; 
+0

完璧な答え、ありがとうございました。 – Podarce

関連する問題