-1

配列:

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

4 に答える 4

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'];
        }
    }
}
于 2013-02-14T13:31:48.550 に答える
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);
于 2013-02-14T13:58:46.197 に答える
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'];
       }          
   }
}
于 2013-02-14T13:34:45.837 に答える
-1
$new_array = array();
foreach ($old_array as $value) {
    $new_array[$value['name']] = $value['value'];
}

var_dump($new_array['kevin']); // prints 10
于 2013-02-14T13:30:25.357 に答える