2012-01-23 14 views
2

私はすでに配列があります。それは3つの項目があると言うことができます。配列を動的に別の配列値にアクセスするPHPの配列ですか?

$user = array('people' => 5, 'friends' => 10, 'siblings' => 7); 

私はその後

array(3) { 
      [0]=> array(2) 
     { [0]=> string(4) "people" [1]=> string(1) "30" } 
      [1]=> array(2) 
     { [0]=> string(6) "friends" [1]=> string(1) "22" } 
      [2]=> array(2) 
     { [0]=> string(10) "siblings" [1]=> string(1) "71" } 
     } 

私は2番目を使用して、私の$user配列にアクセスすることができ、

echo $user['people']; // 5 
echo $user['friends']; // 10 

は今、私は別の配列のような $personと呼ばれる持って言うことができます、のようなこの配列にアクセスすることができます配列 $personを手動で実行します。

echo $user[$person[0][0]]; // Is accessing $user['people'], 5 
echo $user[$person[0][1]]; // Is accessing $user['friends'], 10 
echo $user[$person[0][2]]; // Is accessing $user['siblings'], 7 

どのように私は、この動的に($person配列としてキーを変更することができます)を行うことができますか?このような関数で使用するとしましょう。

max($user[$person[0][0]], $user[$person[0][1]], $user[$person[0][2]]) // 10 

これは可能な場合は?

+0

'echo $ user [$ person [0] [3]];'本当に '$ user ['siblings']'の内容を出力していますか?私はそれが 'echo $ user [$ person [0] [2]];' – Eray

+0

であるべきだと思います。ちょうどタイプミスの笑 – cgwebprojects

答えて

2

foreach()を使用します。

foreach($person as $key => $value) 
{ 
    echo $value[$key]; 
} 
+0

そして、私は動的にそれをmax関数に追加する方法を、それは私が立ち往生している場所です。配列 '$ person'は100個のキーを持つことができます。 – cgwebprojects

+1

@cgwebprojects' max() '関数は、引数のセットか1つの配列引数のどちらかをとります。したがって、一時配列を作成し、' max ) ' – DaveRandom

+0

@cgwebprojects:ここに見つけることができます:http://stackoverflow.com/questions/5846156/get-min-and-max-value-in-php-array –

0

は、配列パラメータとして[0] [$者] $のユーザーとのforeachループを使用してみてください。多次元配列の両方のレベルを通過する場合は、foreachを別のforeachの内側にネストすることができます

1

foreachよりも堅牢なソリューションは、PHPの組み込みRecursiveArrayIteratordocsになります。

$users = array(
    array('people' => 5, 'friends' => 10, 'siblings' => 7), 
    array('people' => 6, 'friends' => 11, 'siblings' => 8), 
    array('people' => 7, 'friends' => 12, 'siblings' => 9) 
); 

$iterator = new RecursiveArrayIterator($users); 

while ($iterator->valid()) { 
    if ($iterator->hasChildren()) { 
    // print all children 
    foreach ($iterator->getChildren() as $key => $value) { 
     echo $key . ' : ' . $value . "\n"; 
    } 
    } else { 
    echo "No children.\n"; 
    } 
    $iterator->next(); 
} 
関連する問題