PHP将多维数组拆分为较小的数组块

时间:2015-09-04 11:28:05

标签: php arrays codeigniter

我有一个多维数组,它有图像名称和图像标签。这个数组有时会超过100K。我需要将这个数组拆分成小块,然后让我说10K块,因为我需要从每个数组中获取图像名称,并将本地存储的图像添加到zip文件中。

数组示例:

Array ( 
[0] => Array ( [sku] => 1 [image] => 1-gbc.jpg [image_label] => 1 GBC EB100000) 
[1] => Array ( [sku] => 2 [image] => 2-ib575037.jpg [image_label] => 2 IB575037) 
[2] => Array ( [sku] => 3 [image] => 3-s0190303-paper-mate.jpg [image_label] => 3 Paper Mate S0190303 )
)

我需要将其拆分为更小的块,因为有时无法将一个数组的所有图像添加到单个zip文件中,这就是为什么我需要为每个数组块创建单独的zip。

我已经尝试过使用array_chunk,但是对我来说它不起作用我做错了。

images = array_chunk($array, 10000);

2 个答案:

答案 0 :(得分:2)

array_chunk()应该适用于您提供的示例。生成的数组将具有额外的深度,包含数字索引的“块”数组,它将遵循原始数组的格式。

$array = array(
    array("sku" => 1,
          "image" => "1-gbc.jpg",
          "ib575037.jpg" => "1 GBC EB100000" ),
     array("sku" => 2,
          "image" => "ib575037.jpg",
          "image label" => "2 IB575037" ),
    array("sku" => 3,
          "image" => "s0190303-paper-mate.jpg",
          "image label" => "3 Paper Mate S0190303" ),
);

$array = array_chunk($array, 1);

foreach($array as $chunk)
{
    foreach($chunk as $subarray)
    {
        echo "<pre>";
        print_r($subarray);
        echo "</pre>";
    } 
}

希望这个例子可以解决问题。遵循此格式应该允许您处理每个“块”。

你不只是拆分一个数组,而是把它变成块,所以每个结果数组都会包含一个块数组,而且每个块都会包含很多你将原始数组拆分的值。

答案 1 :(得分:0)

您可以使用array_slice拆分数组,然后使用array_map对其进行映射,以获得合适的输出。请注意,虽然您可以自由更改订单,但由于性能原因,首先切片然后映射会更明智。