2013-09-09 3 views
2

Я пытаюсь выяснить способ передачи имени или кода территории массиву торговых представителей и вернуть сценарий этому идентификатору. Вот пример:Многомерные массивы PHP

$sales_people = array(
    '2' => array(
     'states' => array('NY', 'NJ', 'CT', 'MA', 'VT', 'ME'), 
     'codes' => array('CA1', 'US7', 'UT9') 
    ), 
    '5' => array(
     'states' => array('FL', 'GA', 'SC', 'NC', 'TN'), 
     'codes' => array('VA4', 'VA8', 'VA3') 
    ) 
); 

Если $foo = 'VA4', как бы я идти о том, возвращение сценария 5? Точно так же, если $foo = 'NJ', как бы мне вернуть его 2?

Я думал об использовании in_array(), но казалось бы, что это не работает на многомерных массивах.

Любое понимание было бы очень оценено.

ответ

2

Если вы правильно поняли, вы хотите найти значение в обоих ключах (states и codes). Если да, то этот код выполняет его:

function sales_search($arr, $needle) { 
    foreach ($arr as $id => $data) { 
    if (in_array($needle, $data['states'])) { 
     return $id; 
    } 

    if (in_array($needle, $data['codes'])) { 
     return $id; 
    } 
    } 
    return false; 
} 

Живой пример @ Ideone.com: http://ideone.com/wmfP2v

echo sales_search($sales_people, 'NJ'); // 2 
echo sales_search($sales_people, 'VA4'); // 5 
+0

Спасибо! Это именно то, что мне нужно. Я играл и придумывал какой-то код, но я работал, но ваш намного проще. Я очень ценю помощь! – Pete

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