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.