【发布时间】:2019-03-13 08:49:21
【问题描述】:
我有这个数组:
0 => array:3 [
"product_id" => "1138"
"product_image" => "/resources/medias/shop/products/shop-6500720--1.png"
"product_sku" => "6500722"
]
1 => array:3 [
"product_id" => "1144"
"product_image" => "/resources/medias/shop/products/shop-6501041--1.png"
"product_sku" => "6501046"
]
2 => array:3 [
"product_id" => "113"
"product_image" => "/resources/medias/shop/products/shop-6294909--1.png"
"product_sku" => "6294915"
]
我正在寻找一种方法来获取仅包含所需列的多个数组(array_column 不是一个选项,因为它只给我一列)。
我做了什么
function colsFromArray($array, $keys)
{
return array_map(function ($el) use ($keys) {
return array_map(function ($c) use ($el) {
return $el[$c];
}, $keys);
}, $array);
}
$array = array(
[
"product_id" => "1138",
"product_image" => "/resources/medias/shop/products/shop-6500720--1.png",
"product_sku" => "6500722"
],
[
"product_id" => "1144",
"product_image" => "/resources/medias/shop/products/shop-6501041--1.png",
"product_sku" => "6501046"
],
[
"product_id" => "113",
"product_image" => "/resources/medias/shop/products/shop-6294909--1.png",
"product_sku" => "6294915"
]
);
colsFromArray($array, array("product_id", "product_sku"));
//0 => array:3 [
// "product_id" => "1138"
// "product_sku" => "6500722"
// ]
//1 => array:3 [
// "product_id" => "1144"
// "product_sku" => "6501046"
// ]
//2 => array:3 [
// "product_id" => "113"
// "product_sku" => "6294915"
//]
问题是它看起来太滞后,因为它在这个上迭代了两次。 如果没有这种解决方法,有没有办法获得多个列?
我正在使用 PHP5.6
【问题讨论】:
-
嗨@fiskolin,问题不清楚
-
@fiskolin 你能解释一下你从哪里得到数组吗?是否可以修改数据的初始拉取?
-
更大的问题是你丢失了钥匙,Sandbox
标签: php arrays filtering php-5.6