PHP - Отримайте ключове ім'я значення масиву


157

У мене є масив у такий спосіб:

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

Відповіді:


332

Якщо у вас є значення і хочете знайти ключ, використовуйте array_search()так:

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

$keyтепер буде містити ключ для значення 'a'(тобто 'first').


21
array_filter()може використовуватися, якщо вам потрібно повернути всі результати відповідності замість лише першого відповідного, оскільки він зберігає ключі.
Майк Ліонс

5
Щось, на мою думку, варто зазначити тут: це рішення не працювало для мене, поки я не виявив, що сортування масиву (сортування ($ arr)) видаляє ключові імена та вдається до значень індексу за замовчуванням 0,1,2 та ін. Тож якщо ви сортуєте, використовуйте asort (asort ($ arr)). Це підтримує ключові значення. php.net/manual/en/function.asort.php
Rich701

63
key($arr);

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

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


@AnthonyRutledge Це поверне лише те, на що вказується внутрішній покажчик. Якщо нам потрібна інша довідка, тоді ми повинні використовувати метод zrvans, який спеціально визначає потрібне значення.
Parapluie


18

Якщо ім’я динамічне, то у вас повинно бути щось на кшталт

$arr[$key]

що означатиме, що $ ключ містить значення ключа.

Ви можете використовувати array_keys()для отримання ВСІХ ключів масиву, наприклад

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

дав би тобі

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

16

Так, інфакт php - одна з небагатьох мов, які надають таку підтримку.

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']; 

8

використовувати , array_keys()щоб отримати масив всіх унікальних ключів.

Зауважте, що до масиву з іменованими ключами, як ваш, $arrтакож можна отримати числові індекси, як-от $arr[0].

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


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: ключ - Посібник

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.