Ответ 1
$i = array_search('blah', array_keys($array));
Хорошо, поэтому мне нужно захватить позицию "бла" в этом массиве (позиция не всегда будет одинаковой). Например:
$array = (
'a' => $some_content,
'b' => $more_content,
'c' => array($content),
'blah' => array($stuff),
'd' => $info,
'e' => $more_info,
);
Итак, я хотел бы иметь возможность вернуть число, в котором ключ "бла" находится внутри массива. В этом случае он должен вернуться 3. Как я могу сделать это быстро? И без влияния на массив $array.
$i = array_search('blah', array_keys($array));
Если вы знаете, что ключ существует:
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
, это может зависеть от сценария, поэтому просто еще одна альтернатива.
$keys=array_keys($array);
даст вам массив, содержащий ключи $array
Итак, array_search('blah', $keys);
даст вам индекс blah
в $keys
и, следовательно, $array
Пользователь array_search
(doc). А именно: `$ index = array_search ('blah', $array)