2015-09-04 2 views
0

У меня есть многомерный массив, который имеет имена изображений и метку изображения. Этот массив иногда достигает 100K. Мне нужно разбить этот массив на маленькие куски, чтобы сказать 10K куски, так как мне нужно получить имя изображения из каждого массива и добавить это изображение, которое хранится локально в zip-файле.PHP Split Многомерный массив в более мелкие куски массива

Пример массива:

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) 
) 

мне нужно разделить это на меньшие куски, потому что иногда получить невозможно добавить все изображения для одного массива в отдельные почтовые файлы, поэтому мне нужно создать отдельный почтовый индекс для каждый массив.

Я пробовал пользователя array_chunk, но он не работает для меня, я делаю что-то неправильно.

images = array_chunk($array, 10000); 
+0

'array_chunk'? http://php.net/manual/en/function.array-chunk.php – user2959229

+0

Я пробовал это, но по какой-то причине он не разбивает массив. – user4676307

ответ

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>"; 
    } 
} 

Надеюсь, этот пример прояснит ситуацию. После этого формата вы должны обрабатывать каждый «кусок».

Вы не просто разбиваете массив, а превращаете его в куски, поэтому каждый результирующий массив будет содержать массив кусков, и каждый из этих фрагментов будет содержать сколько-нибудь значений, на которые вы разделили исходный массив.

+0

спасибо, что я действительно очень ценю вашу помощь. – user4676307

+1

Рад помочь. –

0

Вы можете разбить массив, используя array_slice, а затем сопоставить его с помощью array_map для того, чтобы получить подходящий выход. Обратите внимание, что, хотя вы можете изменить порядок, мудрее сначала срезать, а затем отобразить по причинам производительности.

+0

Благодарим вас за ответ. Можете ли вы, пожалуйста, посоветуйте мне, как я могу достичь меня, что мне нужно, используя функцию, которую вы только что упомянули, поскольку я никогда не использовал их раньше. – user4676307

Смежные вопросы