Как получить положение ключа в массиве - PullRequest
32 голосов
/ 18 сентября 2011

Хорошо, поэтому мне нужно захватить позицию «бла» в этом массиве (позиция не всегда будет одинаковой).Например:

$array = (
    'a' => $some_content,
    'b' => $more_content,
    'c' => array($content),
    'blah' => array($stuff),
    'd' => $info,
    'e' => $more_info,
);

Итак, я хотел бы иметь возможность вернуть номер, где находится ключ «бла» в массиве.В этом случае он должен вернуть 3. Как я могу сделать это быстро?И без влияния на массив $ array вообще.

Ответы [ 4 ]

84 голосов
/ 18 сентября 2011
$i = array_search('blah', array_keys($array));
5 голосов
/ 18 сентября 2011

Если вы знаете, что ключ существует:

PHP 5.4 ( Демо ):

echo array_flip(array_keys($array))['blah'];

PHP 5.3:

$keys = array_flip(array_keys($array));
echo $keys['blah'];

Есливы не знаете, что ключ существует, вы можете проверить с помощью isset:

$keys = array_flip(array_keys($array));
echo isset($keys['blah']) ? $keys['blah'] : 'not found' ;

Это просто похоже на array_search, но использует карту, которая уже существует внутри любого массива.Я не могу сказать, действительно ли это лучше, чем array_search, это может зависеть от сценария, поэтому просто другая альтернатива.

0 голосов
/ 18 сентября 2011

$keys=array_keys($array); даст вам массив, содержащий ключи $array

Итак, array_search('blah', $keys); даст вам индекс blah в $keys и, следовательно, $array

0 голосов
/ 18 сентября 2011

Пользователь array_search ( документ ). А именно, $ index = array_search ('blah', $ array)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...