【问题标题】:compare 2 arrays using keys and subtract the values based on keys in PHP使用键比较 2 个数组并根据 PHP 中的键减去值
【发布时间】:2018-08-20 09:30:35
【问题描述】:

我有 2 个带有键和值的数组,想根据键减去 2 个数组值,

下面的代码是,我尝试过的, 第一个数组(带有键和值):

   $bulk_service_vals_id4 =  '101,102,103,104'; 
    $new_bulk_service_vals_id4 = explode(',',$bulk_service_vals_id4); 

    $bulk_service_vals4 =  '2,1,3,2'; 
    $new_bulk_service_vals4 = explode(',',$bulk_service_vals4);  

第二个数组(带有键和值):

    $booked_service_id =  '101,101,104,103,104'; 
    $new_booked_service_id = explode(',',$booked_service_id); 
    print_r(array_unique($new_booked_service_id));  
    $book_unique_service_id = array_unique($new_booked_service_id);

    $book_unique_service_val = array();
    foreach($book_unique_service_id as $new_booked_service_idss)    
    {
        //echo $new_booked_service_idss;
         $book_unique_service_val[] = substr_count($booked_service_id,$new_booked_service_idss).'<br>';
    }   
    print_r($book_unique_service_val);

合并两个数组:

    $key_val1 =array_combine($new_bulk_service_vals_id4,$new_bulk_service_vals4);
    print_r($key_val1);
    $key_val2 =array_combine($book_unique_service_id,$book_unique_service_val);
    print_r($key_val2);

带有值的第一个数组键的输出:

   key : 101,102,103,104
   values: 2,1,3,2

输出带有值的第二个数组键:

  key: 101,104,103
  values: 2,2,1

我想得到像 tihis 格式这样的最终输出:

 key: 101,102,103,104
 values: 0,1,2,0

请满足我的需要。

@谢谢..

【问题讨论】:

    标签: php arrays subtraction


    【解决方案1】:

    $a1 和 $a2 是两个数组。

    $result = array();
    
    foreach($a1 as $k => $v)
        $result[$k] = array_key_exists($k, $a2) ? $v - $a2[$k] : $v;
    

    【讨论】:

      【解决方案2】:

      您可以使用 foreach 并检查第一个数组中的键是否存在于第二个数组中。如果是,则减去该值:

      $key_val1 = [
          101 => 2,
          102 => 1,
          103 => 3,
          104 => 2
      ];
      
      $key_val2 = [
          101 => 2,
          104 => 2,
          103 => 1
      ];
      
      foreach ($key_val1 as $key => &$value) {
          if (array_key_exists($key, $key_val2)) {
              $value -= $key_val2[$key];
          }
      }
      unset ($value);
      
      print_r($key_val1);
      
      Array
      (
          [101] => 0
          [102] => 1
          [103] => 2
          [104] => 0
      )
      

      Demo

      【讨论】:

        猜你喜欢
        • 2012-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-17
        • 1970-01-01
        相关资源
        最近更新 更多