douwen2072 2016-11-16 21:44
浏览 26
已采纳

比较两个数组(库存)

For a cars company (Just an example) I need to automate the stock inventory:

$purchase_array = array("Lamborghini" => "5", "Ferrari" => "4", "Bugatti" => "3", "McLaren" => "2", "Fiat" => "10", "Mazda" => "20");

$sales_array = array("Lamborghini" => "1", "Ferrari" => "2", "Bugatti" => "3");

I want to have as results this array:

$stock_array = array("Lamborghini" => "4", "Ferrari" => "2", "Bugatti" => "0", "McLaren" => "2", "Fiat" => "10", "Mazda" => "20");

First I looked for the common cars:

$common_cars = array_keys(array_intersect_key($purchase_array, $sales_array));
foreach ($common_cars as $common_car) {
.....
}

buy I couldn't finish it.

Any help will be appreciated. Thanks in advance

  • 写回答

1条回答 默认 最新

  • dougu9895 2016-11-16 22:00
    关注

    You could do something similar to this. If you wanted to preserve the purchase_array you could copy the array to another var.

    N.B. If you could retrieve/store the quantity as intergers you can be sure when you loop over the items you wont get an unexpected result

    $aPurchaseArray = array("Lamborghini" => 5, "Ferrari" => 4, "Bugatti" => 3, "McLaren" => 2, "Fiat" => 1", "Mazda" => 2");
    
    $aSalesArray = array("Lamborghini" => 1, "Ferrari" => 2, "Bugatti" => 3);
    
    // foreach sales item, using the key as the name and value as quantity sold
    foreach($aSalesArray as $sProductName => $iQuantitySold){
    
        // if the product name exists in the target reduce its quantity
        if(isset($aPurchaseArray[$sProductName])){
            $aPurchaseArray[$sProductName] - $iQuantitySold;
        }
    
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?