PHP-получить имя ключа значения массива


у меня есть массив следующим образом:

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' по его индексу. Как я могу это сделать?

10 104

10 ответов:

если у вас есть значение и вы хотите найти ключ, используйте array_search() такой:

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

$key теперь будет содержать ключ для value 'a' (то есть 'first').

key($arr);

возвращает значение ключа для текущего элемента массива

http://uk.php.net/manual/en/function.key.php

Если я правильно понял, вы не можете просто использовать:

foreach($arr as $key=>$value)
{
  echo $key;
}

посмотреть руководство PHP

если имя динамическое, то у вас должно быть что-то вроде

$arr[$key]

что означает, что $key содержит значение ключа.

можно использовать array_keys() чтобы получить все ключи массива, например,

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

даст вам

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

Да вы можете infact php является одним из немногих языков, которые обеспечивают такую поддержку..

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

}

использовать array_keys (), чтобы получить массив всех уникальных ключей.

обратите внимание, что массив с именованными ключами, такими как ваш $arr, также может быть доступен с числовыми индексами, такими как $arr[0].

http://php.net/manual/en/function.array-keys.php

Если вам нужно вернуть элементы массива с одинаковым значением, используйте функцию array_keys ()

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

вот еще один вариант

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

проверьте документацию для array_keys() функции

array_keys функции

вы можете использовать ключевую функцию 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: ключ-руководство