PHP将具有相同键的数组值提取到另一个数组中

时间:2013-01-11 06:11:38

标签: php multidimensional-array foreach

我有一个数组:

    $diff_date_results = 
    Array ( 
        [0] => Array ( [differential] => 7.7 [date] => 2012-12-30 ) 
        [1] => Array ( [differential] => 8.2 [date] => 2012-12-31 ) 
        [2] => Array ( [differential] => 9.9 [date] => 2013-01-03 )
    )

我想从每个内部数组的差异键中提取所有值,以便在新创建的数组上使用array_sum函数。

我有这个,它为我提取了三个数字,但我得到每个数字的php错误作为未定义的索引。 (注意:未定义的索引:第55行的C:\ wamp \ www \ jquery \ test.php中的7.7)

到目前为止我的代码如下:

    $diff_results = array();
    foreach($diff_date_results as $entry){
        $diff_results[$entry['differential']];
    }
    print_r($diff_results);

我确信这很简单,我现在已经用了很长时间了,任何帮助都会很棒!

感谢。

5 个答案:

答案 0 :(得分:0)

$diff_results = array();
foreach($diff_date_results as $entry){
    $diff_results[] = $entry['differential'];
}

//just for displaying all differential
print_r($diff_results);

现在,您可以在$ diff_results上使用array_sum。

此外,如果您想要总和,那么您也可以使用以下方法。

$diff_results = "";
foreach($diff_date_results as $entry){
    $diff_results = $diff_results + $entry['differential'];
}

//$diff_results will have sum of all differential
echo $diff_results;

答案 1 :(得分:0)

这样做:

$diff_results = array();

foreach($diff_date_results as $key => $entry){
    $diff_results[] .= $entry['differential']];
}

 print_r($diff_results);

感谢。

答案 2 :(得分:0)

$diff_results = array_map($diff_date_results,
                          function($entry) { return $entry['differential']; });

答案 3 :(得分:0)

$diff_date_results =    array ( 
        0 => array ( 'differential'=> 7.7, 'date' => 20), 
        1 => Array ( 'differential' => 8.8, 'date' => 20 ), 
        2 => Array ( 'differential' => 9.8 ,'date' => 20 ),
    );
  $value_differential=array();
 foreach( $diff_date_results as $key=>$value){
   print_r($value);
 $value_differential[]=$value['differential'];
 }

 print_r(array_sum($value_differential));

答案 4 :(得分:0)

对于任何绊倒这个问题的人,我认为最好的解决方案是Barmars的工作版本,如下所示:

$diff_results = array_map(function($entry)
                          { 
                          return $entry['differential']; 
                          }, 
                          $diff_date_results);

这是一个更优雅的1线解决方案(为了便于阅读,我将其扩展到5行)。