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 ADS生成的微带线为什么是蓝色空心的
  • ¥15 求一下解题思路,完全不懂
  • ¥15 tensorflow
  • ¥15 densenet网络结构中,特征以cat方式复用后是怎么进行误差回传的
  • ¥15 STM32G471芯片spi设置了8位,总是发送16位
  • ¥15 R语言并行计算beta-NTI中tree文件的类型
  • ¥15 如何解读marsbar导出的ROI数据?
  • ¥20 求友友协助弄一下基于STC89C52单片机的声光控制灯原理图
  • ¥15 arduino双向交通灯设计
  • ¥15 有没有会粒子群算法的大能(○゜ε^○)求带不会出收敛图😭