Search for array row with specific column value and return another value from qualifying row



PHP Snippet 1:

$data = array_column($data, "value", "url");
$search = 'southampton';

$value = isset($data[$search])?$data[$search]:"not found";

echo $value;

PHP Snippet 2:

$value = $data[$search]??"not found";

PHP Snippet 3:

$a = array (
    0 => 
    array (
        "url" => 'fareham',
        "value" => 'Fareham'
    ),
    1 => 
    array (
        "url" => 'southampton',
        "value" => 'Southampton'
    )
);

$u = 'fareham';
$i = $a[false===($f=array_search($u,array_column($a,'url')))?-1:$f]['value'];
print_r($i);

PHP Snippet 4:

Fareham

PHP Snippet 5:

function serchMultiDimensionalValue($needle, $haystack, $fields='value'){
   if(false === ($f=array_search($needle,array_column($haystack,'url')))) return false; //or return [];

   if(!is_array($fields)) $fields = [$fields];

   return array_intersect_key($haystack[$f], array_flip($fields));
}


var_dump(serchMultiDimensionalValue('foo',$a));
var_dump(serchMultiDimensionalValue('fareham',$a));
var_dump(serchMultiDimensionalValue('fareham',$a, 'extra'));
var_dump(serchMultiDimensionalValue('fareham',$a, ['extra','url']));

PHP Snippet 6:

bool(false)
array(1) {
  ["value"]=>
  string(7) "Fareham"
}
array(1) {
  ["extra"]=>
  string(3) "Foo"
}
array(2) {
  ["url"]=>
  string(7) "fareham"
  ["extra"]=>
  string(3) "Foo"
}

PHP Snippet 7:

array_column($array, $returnColumn, $haystackColumn)[$needle] ?? null

PHP Snippet 8:

$array = [
    ["url" => 'fareham', "value" => 'Fareham'],
    ["url" => 'southampton', "value" => 'Southampton']
];
$needle = 'fareham';
$haystackColumn = 'url';
$returnColumn = 'value';

$value = null;
foreach ($array as $row) {
    if ($row[$haystackColumn] === $needle) {
        $value = $row[$returnColumn];
        break;
    }
}
var_export($value); // 'Fareham'