我有一个庞大的多维关联数组,我需要简化它。以下是数据示例:
数组([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);
答案 0 :(得分:3)
简单使用array_column()
函数返回输入数组
$new_arr = array_column($array,'sku');
print_r($new_arr);
答案 1 :(得分: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');
答案 2 :(得分:0)
有许多数组函数可能有所帮助,但可读性受损。为什么不这样做:
$simpleArray = [];
foreach ($complicatedArray as $skuArray) {
$simpleArray[] = $skuArray['sku'];
}
不尽可能短,但可理解。它甚至可能执行得稍快,但差异将是最小的。
好的,我必须承认array_column()
是一个非常好的解决方案,而且很可能更快。