2014-02-03 5 views
0

Я пытался работать с функцией array_search.Php Array_Search issue

Это мой массив:

array (size=23) 
    0 => 
    array (size=3) 
     0 => string '15' (length=2) 
     1 => float 115.08386533184 
     2 => string '2014-02-06 21:00:00' (length=19) 
    1 => 
    array (size=3) 
     0 => string '81' (length=2) 
     1 => float 100.41587590619 
     2 => string '2014-03-28 00:00:00' (length=19) 
    2 => 
    array (size=3) 
     0 => string '65' (length=2) 
     1 => float 99.096448338334 
     2 => string '2014-02-08 21:00:00' (length=19) 
    3 => 
    array (size=3) 
     0 => string '53' (length=2) 
     1 => float 98.752479251378 
     2 => string '2014-03-05 12:00:00' (length=19) 
    4 => 
    array (size=3) 
     0 => string '24' (length=2) 
     1 => float 98.303557178126 
     2 => string '2014-02-07 21:00:00' (length=19) 
    5 => 
    array (size=3) 
     0 => string '23' (length=2) 
     1 => float 98.270536817788 
     2 => string '2014-02-08 21:30:00' (length=19) 
    6 => 
    array (size=3) 
     0 => string '37' (length=2) 
     1 => float 98.139812350661 
     2 => string '2014-02-06 23:00:00' (length=19) 
    7 => 
    array (size=3) 
     0 => string '13' (length=2) 
     1 => float 97.810954038756 
     2 => string '2014-02-09 19:45:00' (length=19) 
    8 => 
    array (size=3) 
     0 => string '22' (length=2) 
     1 => float 95.975221202728 
     2 => string '2014-02-11 20:30:00' (length=19) 
    9 => 
    array (size=3) 
     0 => string '66' (length=2) 
     1 => float 94.115075316114 
     2 => string '2014-02-04 19:00:00' (length=19) 
    10 => 
    array (size=3) 
     0 => string '52' (length=2) 
     1 => float 93.957291067159 
     2 => string '2014-03-15 00:00:00' (length=19) 
    11 => 
    array (size=3) 
     0 => string '12' (length=2) 
     1 => float 89.188128768086 
     2 => string '2014-05-17 10:00:00' (length=19) 
    12 => 
    array (size=3) 
     0 => string '51' (length=2) 
     1 => float 88.381986169995 
     2 => string '2014-03-27 12:00:00' (length=19) 
    13 => 
    array (size=3) 
     0 => string '98' (length=2) 
     1 => float 85.240471279545 
     2 => string '2014-02-17 18:00:00' (length=19) 
    14 => 
    array (size=3) 
     0 => string '92' (length=2) 
     1 => float 82.721601210972 
     2 => string '2014-02-06 20:15:00' (length=19) 
    15 => 
    array (size=3) 
     0 => string '82' (length=2) 
     1 => float 82.473535719129 
     2 => string '2014-02-27 17:00:00' (length=19) 
    16 => 
    array (size=3) 
     0 => string '121' (length=3) 
     1 => float 56.833974620724 
     2 => string '2014-02-07 22:30:00' (length=19) 
    17 => 
    array (size=3) 
     0 => string '120' (length=3) 
     1 => float 36.269423317467 
     2 => string '2014-02-06 21:30:00' (length=19) 
    18 => 
    array (size=3) 
     0 => string '83' (length=2) 
     1 => float 35.863780709688 
     2 => string '2014-02-21 07:00:00' (length=19) 
    19 => 
    array (size=3) 
     0 => string '35' (length=2) 
     1 => float 24.322967350005 
     2 => string '2014-02-07 21:30:00' (length=19) 
    20 => 
    array (size=3) 
     0 => string '6' (length=1) 
     1 => float 19.71405484708 
     2 => string '2014-02-14 22:00:00' (length=19) 
    21 => 
    array (size=3) 
     0 => string '45' (length=2) 
     1 => float 19.142717452481 
     2 => string '2014-03-15 00:00:00' (length=19) 
    22 => 
    array (size=3) 
     0 => string '117' (length=3) 
     1 => float 17.641278106673 
     2 => string '2014-02-18 17:30:00' (length=19) 

Теперь - Дело в том, я использую array_search для того, чтобы получить ключ от определенного ID (Примечание: Идентификатор является первым значением в каждом массиве). Дело в том, что это не работает, возможно потому, что он не может получить ключ самого массива.

Позвольте мне показать вам пример: ($ массив = Массив выше)

$r = array_search(53, array_keys($array)); 

Я хочу $ г равным 3, потому что то они ключевые позиции массива. Любая идея, как я могу это сделать?

+2

При публикации такой структуры скопируйте ее из источника страницы браузера, чтобы сохранить форматирование строк и отступов от 'print_r(), var_dump()'. Затем отформатируйте его как блок кода, и нам легче понять визуально. –

+1

'array_keys ($ array)' - это только индексы массива верхнего уровня, которые идут от '0 до 22. То, что вы хотите, это получить элемент 0 каждого подматрица и искать в нем 53. – Barmar

+0

@Barmar Я знаю, дело в том, что я пытаюсь получить позицию верхнего уровня массива, путем поиска идентификатора в поддиапазоне –

ответ

3
$r = array_search('53', array_map(function($x) { return $x[0]; }, $array)); 

array_map построит массив элемента 0 каждого элемента массива. Затем вы ищите 53, а $r будет его положением.

Или вы могли бы просто написать цикл:

foreach ($array as $i => $el) { 
    if ($el[0] == '53') { 
     $r = $i; 
     $result = $el; 
     break; 
    } 
} 
0

Лучше, чем вызов array_map(), чтобы изолировать первый столбец значений: array_column(). Это задача, для которой была создана функция.

Используйте это реализация:

$r = array_search('53', array_column($array,0)); 

Done.

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