PHP-配列値のキー名を取得する


158

次のような配列があります:

function example() {
    /* some stuff here that pushes items with
        dynamically created key strings into an array */

    return array( // now lets pretend it returns the created array
        'firstStringName' => $whatEver,
        'secondStringName' => $somethingElse
    );
}

$arr = example();

// now I know that $arr contains $arr['firstStringName'];

のインデックスを見つけて$arr['firstStringName']ループしarray_keys($arr)'firstStringName'そのインデックスでキー文字列を返すことができるようにする必要があります。どうやってやるの?


達成しようとしていることのユースケースについて詳しく説明できますか?
nikc.org 2012年

回答:


333

値があり、キーを見つけたい場合は、次のarray_search()ように使用します。

$arr = array ('first' => 'a', 'second' => 'b', );
$key = array_search ('a', $arr);

$keyこれで、値のキーが含まれます'a'(つまり、'first')。


21
array_filter()キーを保持するため、最初に一致した結果だけでなく、すべての一致結果を返す必要がある場合に使用できます。
Mike Lyons 2014年

5
ここで注意する価値があると思います:配列の並べ替え(sort($ arr))がキー名を削除し、デフォルトの0、1、2などのインデックス値に頼ることに気づくまで、この解決策は機能しませんでした。したがって、並べ替える場合は、asort(asort($ arr))を使用します。これにより、キー値が維持されます。php.net/manual/en/function.asort.php
Rich701



18

名前が動的な場合、次のようなものが必要です

$arr[$key]

つまり、$ keyにはキーの値が含まれます。

array_keys()配列のすべてのキーを取得するために使用できます。

$arr = array('a' => 'b', 'c' => 'd')
$x = array_keys($arr);

あなたに与えるだろう

$x = array(0 => 'a', 1 => 'c');

16

はい、phpはそのようなサポートを提供する数少ない言語の1つです。

foreach($arr as $key=>$value)
{

}

これは、検索して、より多くの時間がかかるごとなどの関連する答えではありません...あまり効果的ではコーディング
Rishab

13

同じ値の配列要素を返す必要がある場合は、array_keys()関数を使用してください

$array = array('red' => 1, 'blue' => 1, 'green' => 2);
print_r(array_keys($array, 1));

11

ここに別のオプションがあります

$array = [1=>'one', 2=>'two', 3=>'there'];
$array = array_flip($array);
echo $array['one']; 


4

PHPのキー関数を使用してキー名を取得できます。

<?php
    $array = array(
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'fruit3' => 'grape',
    'fruit4' => 'apple',
    'fruit5' => 'apple');

    // this cycle echoes all associative array
    // key where value equals "apple"
    while ($fruit_name = current($array)) {
      if ($fruit_name == 'apple') {
        echo key($array).'<br />';
      }
    next($array);
     }
?>

このように:PHP:key-Manual

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.