基于键更新的php多维数组[关闭]

Posted

技术标签:

【中文标题】基于键更新的php多维数组[关闭]【英文标题】:php multidimensional arrays updating based on keys [closed] 【发布时间】:2015-01-14 18:29:48 【问题描述】:

我有两个数组 inventoryStock 和 posStock(销售点库存),它们都使用产品 sku 编号作为键,值是我需要以某种方式使用 $inventoryStock 中的值更新 posStock 的数量,其中有键匹配。

数组示例:

inventoryStock
   abs-0098 => 5,
   abs-0099 => 23,
   abs-0100 => 8,
   abs-0101 => 19


posStock
 abs-0098 => 5,
 abs-0099 => 23,
 abs-0101 => 15

我需要 posStock 与 inventoryStock 相同我不能只将 posStock 设为库存库存,因为库存库存中包含未在销售点列出的额外产品。

【问题讨论】:

请分享您的尝试。 IMO 对于您想要的结果不是很清楚。也许你可以发布一个你想要的 combineStock 的数组。 我同意结果数组会有所帮助,但我不同意那些投票以 'Too Broad' 结束此问题的人。 【参考方案1】:

您可以使用array union。

+ 运算符返回附加到左侧数组的右侧数组;对于两个数组中都存在的键,将使用左侧数组中的元素,而忽略右侧数组中的匹配元素。

在您的情况下(如果我正确理解规范):

$newPOSStock = $inventoryStock + $posStock;

【讨论】:

为了完整起见,这与 array_merge 完全相反,其中左侧数组中的键被右侧数组中的键覆盖。有时您希望将值保留在左侧并使用+,有时您希望将值保留在右侧并使用array_merge。 确实如此。谢谢@Jonathan Kuhn。【参考方案2】:

您正在寻找 php 的 array_key_exists() 函数。

foreach ($inventoryStock as $key => $value) 
      if (array_key_exists($key, $posStock)) 
        $posStock[$key] = $value;
        continue; // Continue Loop
      
      // Do something if the array key doesn't exist.
    

详细说明我为什么要这样做。我现在有一个逻辑块,可以让我在数组键不存在时做一些事情,比如将它添加到 PosStock,或者如果我想要或更改其他变量的值以触发其他行为。

【讨论】:

谢谢,这正是我所需要的。

以上是关于基于键更新的php多维数组[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 在多维数组中查找键

多维数组中的数组排列保持键PHP

基于颜色键的多维数组排列顺序

PHP多维数组搜索并获取键的数组[重复]

如何在 PHP 中展开多维数组(原始键访问路径存储为单个键)?

在不循环多维数组PHP的情况下获取第一个子数组键[重复]