Check if associative array contains value, and retrieve key / position in array Check if associative array contains value, and retrieve key / position in array php php

Check if associative array contains value, and retrieve key / position in array


Try something like this

$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);

Which outputs

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

The key here is array_filter. If the search value 7899 is not static then you could bring it in to the closure with something like function($item) use($searchValue). Note that array_filter is returning an array of elements which is why I pass it through current


For PHP >= 5.5.0 it is easier with array_column:

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

Or to be repeatable without using array_column each time:

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


Taking a guess at what you would like here:

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