2015-03-25 4 views
1

У меня есть массив, которому присвоены $ elements. Когда я использую array_keys для получения ключей, я получаю то, что вы ожидаете.с использованием array_keys и получения неожиданного результата

print_r(array_keys($elements)); 

Результаты в:

Array 
(
    [0] => anchor-namecontentblock_areaBlock0contentblock11_1 
    [1] => anchor-namecontentblock_areaBlock0contentblock22_1 
    [2] => anchor-namecontentblock_areaBlock0contentblock33_1 
... 

Но когда я пытаюсь использовать array_keys со значением поиска, я получаю пустой массив.

print_r(array_keys($elements, "anchor-namecontentblock_areaBlock0contentblock11_1")); 

Если результат не будет:

Array 
(
    [0] => 0 
) 

ли я что-то отсутствует?

+0

Можем ли мы иметь содержимое '$ elements'? – D4V1D

+1

Да! Вам определенно не хватает ['array_search()'] (http://php.net/manual/en/function.array-search.php) – Rizier123

+1

@ Rizier123 Массив, напечатанный здесь, является результатом 'array_keys ($ элементы) 'не исходный массив. 'array_search()' - поиск значений, а не ключей. – D4V1D

ответ

4

Вы делаете неправильный поиск array_keys. Значениями anchor-name... являются KEYS в исходном массиве, а не VALUES. Таким образом, ваш аргумент поиска array_keys бесполезен - он будет искать значения исходного массива, например.

$foo = array(
    'anchor-namecontentblock_areaBlock0contentblock11_1' => 'somevalue' 
    etc.. 
          searched by array_keys---------^^^^^^^^^^ 

Вы должны были бы сделать что-то подобное:

$results = array_search('anchor-name...', array_keys($elements))); 
      ^^^^^^^^^^^^^ 

вместо этого.

+0

Очень приятно поймать! – Rizier123

+0

Awesome. Спасибо, MB. Чтобы просто выяснить, array_search требует, чтобы строка была 1-м параметром, а массив - вторым: array_search ('anchor-name ...', array_keys ($ elements)); –

+0

ах да ... gotta любовь консистенция php ... –

3

Задание параметра поиска на array_keys позволяет получить ключ (ключи), соответствующий одному или нескольким значениям в вашем массиве. Вы передаете ему один из своих массивов ключей, поэтому функция не возвращает никаких результатов.

Смежные вопросы