【问题标题】:How to convert PHP multi-dimensional associative array to simpler indexed array [duplicate]如何将PHP多维关联数组转换为更简单的索引数组[重复]
【发布时间】:2017-09-01 11:26:28
【问题描述】:

我有一个庞大的多维关联数组,我需要对其进行简化。以下是数据示例:

数组 ( [0] => 数组 ( [sku] => 283085 ) [1] => 数组 ( [sku] => 283119 ) [2] => 数组 ( [sku] => 283127 ) [3] => 数组 ( [sku] => 283168 ) [4] => 数组 ( [sku] => 283184 ) [5] => 数组 ( [sku] => 283200 ) [6] => 数组 ( [sku] => 283234 ) [7] => 数组 ( [sku] => 283275 ) [8] => 数组 ( [sku] => 283309 ) [9] => 数组 ( [sku] => 283382 ) [10] => 数组 ( [sku] => 283531 ) [11] => 数组 ( [sku] => 283549 ) [12] => 数组 ( [sku] => 283556 ) [13] => 数组 ( [sku] => 283564 ) [14] => 数组 ( [sku] => 283598 ) [15] => 数组 ( [sku] => 507813 ) [16] => 数组 ( [sku] => 507814 ) [17] => 数组 ( [sku] => 507821 ) [18] => 数组 ( [sku] => 507823 ) [19] => 数组 ( [sku] => 507828 ) [20] => 数组 ( [sku] => 507829 ) [21] => 数组 ( [sku] => 507830 ) [22] => 数组 ( [sku] => 507832 ) [23] => 数组 ( [sku] => 507833 ) [24] => 数组 ( [sku] => 507836 ) [25] => 数组 ( [sku] => 508019 ) [26] => 数组 ( [sku] => 508053 ) [27] => 数组 ( [sku] => 3636 ) [28] => 数组 ( [sku] => 350138 ) [29] => 数组 ( [sku] => 350139 ) [30] => 数组 ( [sku] => 311144 ) [31] => 数组 ( [sku] => 311145 ) [32] => 数组 ( [sku] => 311147 ) [33] => 数组 ( [sku] => 311148 ) [34] => 数组 ( [sku] => 311150 ) [35] => 数组 ( [sku] => 311151 ) [36] => 数组 ( [sku] => 311153 ) [37] => 数组 ( [sku] => 311154 ) [38] => 数组 ( [sku] => 311156 ) [39] => 数组 ( [sku] => 311157 ) [40] => 数组 ( [sku] => 311159 ) [41] => 数组 ( [sku] => 311160 ) [42] => 数组 ( [sku] => 311161 ) [43] => 数组 ( [sku] => 311162 ) [44] => 数组 ( [sku] => 311164 ) [45] => 数组 ( [sku] => 311165 ) [46] => 数组 ( [sku] =......

我想返回一个最小索引数组,其中包含与“sku”匹配的任何键值 - 它们在数组嵌套中的位置无关紧要。

最终结果应该是这样的,因为我有一个预测 sku 数据数组的函数:

数组(283085, 283119, 283119, ...)

上面哪个 PHP 数组函数能最好地实现上述目标?目前我在 foreach 循环中使用 array_push 来填充索引,但我觉得我应该能够以某种方式过滤值。

例子:

$result = $connection->fetchAll($sql);

$skus = $result;

$simpleSkuArray=array();

foreach ($skus as $sku)
{
    array_push($simpleSkuArray, $sku['sku']);
}

myFunction($simpleSkuArray);

【问题讨论】:

标签: php arrays multidimensional-array


【解决方案1】:

简单使用array_column()函数返回输入数组中单列的值

$new_arr = array_column($array,'sku');
print_r($new_arr);

【讨论】:

    【解决方案2】:

    使用 array_map()array_column()

    // (PHP 4 >= 4.0.6, PHP 5, PHP 7)
    print_r(array_map(function($a){return $a['sku'];}, $array));
    
    // (PHP 5 >= 5.5.0, PHP 7)
    print_r(array_column($array,'sku'));  
    

    你的新数组将是

    $new_array = array_map(function($a){return $a['sku'];}, $array);
    
    $new_array = array_column($array,'sku');
    

    【讨论】:

      【解决方案3】:

      有很多数组函数可能会有所帮助,但可读性会受到影响。为什么不这样做:

      $simpleArray = [];
      foreach ($complicatedArray as $skuArray) {
        $simpleArray[] = $skuArray['sku'];
      }
      

      虽然没有那么短,但可以理解。它甚至可能执行得稍微快一些,但差异会很小。

      好吧,我不得不承认array_column() 是一个非常好的解决方案,而且很可能更快。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-14
        • 2016-02-05
        • 1970-01-01
        • 1970-01-01
        • 2016-06-06
        • 1970-01-01
        • 2020-12-09
        相关资源
        最近更新 更多