【问题标题】:Subtracting one array from another从另一个数组中减去一个数组
【发布时间】:2013-02-21 03:03:30
【问题描述】:

我想从另一个数组中减去一个数组。

例如,我有 2 个数组。

Array
(
    [0] => 251
    [1] => 251
    [2] => 130
)


 Array
    (
        [0] => 13
        [1] => 13
        [2] => 50
    )

结果数组必须是

Array
    (
        [0] => 238
        [1] => 238
        [2] => 80
    )

感谢任何形式的帮助。

【问题讨论】:

  • PHP subtract array values 的可能重复项
  • 在这些上使用了 array_map 或 array_walk 以避免 foreach 和保存的内存。

标签: php arrays


【解决方案1】:

试试这个:

$array1  = array(251, 251, 130);
$array2  = array( 13,  13,  50);
$res     = array();
for($i=0;$i<count($array1);$i++){
   $res[$i] = $array1[$i]-$array2[$i];
}

echo "<pre>";
print_r($res);

【讨论】:

  • 请注意,如果 $array2 中不存在密钥 ($i),它将引发警告。
  • 是的...两个数组的长度应该相同
  • 我收到一条错误消息。注意:未定义索引:translationTool
  • @Justin - 那么翻译工具是什么?您在问题中忘记提及的重要事项?
  • 对不起。由于其他故障,它正在抛出错误。它的工作。谢谢
【解决方案2】:

使用array_map的解决方案:

function subtract($a, $b) {
  return $a - $b;
}

$arrayA = array(251, 251, 130);
$arrayB = array( 13,  13,  50);
$output = array_map('subtract', $arrayA, $arrayB);

如果输入数组有不同的维度,它仍然可以工作。

简单的foreach循环解决方案:

$arrayA = array(251, 251, 130);
$arrayB = array( 13,  13,  50);
$output = array();

for ( $i = 0; $i < size($arrayA); ++$i ) {
  $output[] = $arrayA[$i] - $arrayB[$i];
}

【讨论】:

  • 我收到一条错误提示:Notice: Undefined index: translationTool
  • 没有translationTool。你是怎么使用它的?
【解决方案3】:

试试这个

function subArray($arr1, $arr2) {
  $res = array();
  foreach ($arr1 as $key => $value) {
    $res[$key] = $arr2[$key] - $arr1[$key];
  }
}

【讨论】:

    【解决方案4】:
    $arr1 = array(251, 251, 130);
    $arr2 = array( 13,  13,  50);
    $result_array = array();
    
    for ( $i = 0; $i < size($arr1); ++$i ) {
      $result_array [] = $arr1[$i] - $arr2[$i];
    }
    
    print_r($result_array);
    

    【讨论】:

      【解决方案5】:

      我这里有一个示例代码

          function array_sub_values($arr1, $arr2)
      {
          $result = array();
          foreach ($arr1 as $k => $val)
              $result[] = $val - $arr2[$k];
          return $result;
      }
      

      所以你可以这样做:

      $arr1 = array(1, 2, 3);
      $arr2 = array(0, 0, 1);
      
      $arr3 = array_sub_values($arr1, $arr2);
      

      【讨论】:

        【解决方案6】:

        一行 $array3 = $array1 - $array2 是

        $array3 = array_intersect($array1, array_diff($array1, $array2));
        

        【讨论】:

          【解决方案7】:

          如果你不想销毁数组,那么:-

          1. 创建数组 1 的副本
          2. 遍历数组
          3. 如果数组 2 中存在相同的键,则从当前值中减去该值

          代码:

          $array3=array1;
          while(list($key,$value)=each($array3))
          {
              if(isset($array2[$key])) $array3[$key]-=$array2[$key];
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-01-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-27
            • 2019-05-13
            相关资源
            最近更新 更多