web-dev-qa-db-ja.com

PHP:数値インデックスから連想配列キーを取得する方法は?

私が持っている場合:

$array = array( 'one' =>'value', 'two' => 'value2' );

$array[1]から文字列oneを取得するにはどうすればよいですか?

68
Ash

あなたはしません。配列にキー[1]がありません。あなたは出来る:

  • キーを含む新しい配列を作成します。

    $newArray = array_keys($array);
    echo $newArray[0];
    

    ただし、値「one」は$newArray[0]ではなく[1]にあります。
    ショートカットは次のとおりです。

    echo current(array_keys($array));
    
  • 配列の最初のキーを取得します。

     reset($array);
     echo key($array);
    
  • 値「value」に対応するキーを取得します。

    echo array_search('value', $array);
    

これはすべて、まさにあなたがやりたいことによって異なります。事実、[1]はどの方向に「1」でも対応していません。

108
deceze
$array = array( 'one' =>'value', 'two' => 'value2' );

$allKeys = array_keys($array);
echo $allKeys[0];

出力されるもの:

one
51
kennytm

特に1つのキーのみを使用する場合は、すべてのキーの配列を保存することなく、1行でこれを実行できます。

echo array_keys($array)[$i];
16
StarCrashr

または、ループで必要な場合

foreach ($array as $key => $value)
{
    echo $key . ':' . $value . "\n";
}
//Result: 
//one:value
//two:value2
7
Decko
$array = array( 'one' =>'value', 'two' => 'value2' );
$keys  = array_keys($array);
echo $keys[0]; // one
echo $keys[1]; // two
2
Alex Pliutau

次のようにできます:

function asoccArrayValueWithNumKey(&$arr, $key) {
   if (!(count($arr) > $key)) return false;
   reset($array);
   $aux   = -1;
   $found = false;
   while (($auxKey = key($array)) && !$found) {
      $aux++;
      $found = ($aux == $key);
   }
   if ($found) return $array[$auxKey];
   else return false;
}

$val = asoccArrayValueWithNumKey($array, 0);
$val = asoccArrayValueWithNumKey($array, 1);
etc...

コードを試したことはありませんが、うまくいくと確信しています。

幸運を!

0
Nicolas

key 関数は私を助け、非常に簡単です

0
Ram Dane