Проверьте, содержит ли ассоциативный массив значение и извлекает ключ / позицию в массиве

Я изо всех сил пытаюсь объяснить, что я хочу сделать, поэтому извиняюсь, если я смучу вас. Я так же запутался

У меня такой массив:

$foo = array( array('value' => 5680, 'text' => 'Red'), array('value' => 7899, 'text' => 'Green'), array('value' => 9968, 'text' => 'Blue'), array('value' => 4038, 'text' => 'Yellow'), ) 

Я хочу проверить, содержит ли массив значение, например 7899, а также получить текст, связанный с этим значением «Зеленый» в приведенном выше примере.

Попробуйте что-то вроде этого

 $foo = array( array('value' => 5680, 'text' => 'Red'), array('value' => 7899, 'text' => 'Green'), array('value' => 9968, 'text' => 'Blue'), array('value' => 4038, 'text' => 'Yellow'), ); $found = current(array_filter($foo, function($item) { return isset($item['value']) && 7899 == $item['value']; })); print_r($found); 

Какие результаты

 Array ( [value] => 7899 [text] => Green ) 

Ключевым здесь является array_filter . Если значение 7899 поиска не является статическим, вы можете привести его к закрытию с помощью function($item) use($searchValue) . Обратите внимание, что array_filter возвращает массив элементов, поэтому я array_filter его через current

Для PHP> = 5.5.0 проще с array_column :

 echo array_column($foo, 'text', 'value')[7899]; 

Или повторяться без использования array_column каждый раз:

 $bar = array_column($foo, 'text', 'value'); echo isset($bar[7899]) ? $bar[7899] : ''; 

Угадайте, что вы хотели бы здесь:

 function findTextByValueInArray($fooArray, $searchValue){ foreach ($fooArray as $bar ) { if ($bar['value'] == $searchValue) { return $bar['text']; } } }