-1

array:

array(
      ['name'=>'kevin','value'=>'10'],
      ['name'=>'sam','value'=>'20']
     );

how can i return value where name='sam' for example ?

and what how can i do it in even deeper array

array(
      [0]=>array( 'inputs'=>
                    array(['name'=>'kevin','value'=>'10'],['name'=>'sam','value'=>'20']
                 ),
      [1]=>array( 'inputs'=>
                    array(['name'=>'kim','value'=>'10'],['name'=>'kirki','value'=>'20']
                 )
     );
Zalaboza
  • 8,899
  • 16
  • 77
  • 142

4 Answers4

1
$arr = array(
    array("name"=>"A","info"=>"one"),
    array("name"=>"B","info"=>"two"),
    array("name"=>"C","info"=>"three")
);

foreach($arr as $v){
    if ($v['name']==="A"){
        echo $v['info'];
    }
}

In Deep Level

$arr = array(
    array("input"=>array(
        "name"=>"A",
        "info"=>"one"
    )),
    array("input"=>array(
        "name"=>"B",
        "info"=>"Two"
    ))
);

foreach($arr as $subarr){ // First foreach iterate through arrays and next foreach iterate through values of each sub array
    foreach($subarr as $v){
        if ($v['name']==="A"){
            echo $v['info'];
        }
    }
}
nanobash
  • 5,419
  • 7
  • 38
  • 56
1

you need a recursive array_search - all answers above handle an exact amount of depth (in this case 2) only.

something like

function recursive_array_search($needle,$haystack) {
  foreach ($haystack as $key=>$value) {
    if ($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
        return $value['value'];
    }
  }
  return false;
}

recursive_array_search('sam', $start_array);
djjjuk
  • 368
  • 1
  • 2
  • 14
0
for($i=0;$i<count($array);$i++)
{
   if($array['name']=="sam")
   {
      echo $array['value'];
   }
}

and for next array you can do like this....

for($i=0;$i<count($array);$i++)
{
   for($j=0;$j<count($array[$i]['inputs']);$j++)
   {
       if($array[$i]['inputs'][$j]['name']=="sam")
       {
          echo $array[$i]['inputs'][$j]['info'];
       }          
   }
}
Hardik
  • 1,429
  • 2
  • 19
  • 37
-1
$new_array = array();
foreach ($old_array as $value) {
    $new_array[$value['name']] = $value['value'];
}

var_dump($new_array['kevin']); // prints 10
Waleed Khan
  • 11,426
  • 6
  • 39
  • 70