返回数组,其中key = value在多维数组中

时间:2013-02-14 13:27:16

标签: php arrays multidimensional-array array-filter

数组:

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

我怎样才能返回值= name =' sam'例如?

以及如何在更深的阵列中完成这项工作

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']
                 )
     );

4 个答案:

答案 0 :(得分: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'];
    }
}

深层次

$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'];
        }
    }
}

答案 1 :(得分:1)

你需要一个递归的array_search - 上面的所有答案都只处理精确的深度(在这种情况下为2)。

类似

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

答案 2 :(得分:0)

for($i=0;$i<count($array);$i++)
{
   if($array['name']=="sam")
   {
      echo $array['value'];
   }
}

对于下一个数组,你可以这样做....

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'];
       }          
   }
}

答案 3 :(得分:-1)

$new_array = array();
foreach ($old_array as $value) {
    $new_array[$value['name']] = $value['value'];
}

var_dump($new_array['kevin']); // prints 10