PHP - Take 4 items from one array then 2 from another and merge into an array, recurse until no more items -


i've got 2 arrays, 1 full of landscape orientation image urls , 1 full of portrait orientation image urls. output on page in image slide show each slide comprised of of 4 landscape images , 2 portrait images.

i've got images arrays, i'm calling them

$horizontalimages $verticalimages 

now want create new array selects first 4 images $horizontalimagesand first 2 images $verticalimages , makes 1 entry in new array. recursively chooses next 4 $horizontalimages , next 2 $verticalimagesand makes next item in new array , continue along until there no more items.

so, pie in sky example of think data should following, , please excuse errors here, i'm winging in terms of might , can't tell if correct or if multi-dimensions / nested arrays, need understanding principle of structure of new array like.

array(x) {     [0]=>???array???(x){        [0]=>"/landscape-image-1.jpg"        [1]=>"/landscape-image-2.jpg"        [2]=>"/landscape-image-3.jpg"        [3]=>"/landscape-image-4.jpg"        [4]=>"/portrait-image-1.jpg"        [5]=>"/portrait-image-2.jpg"     }     [1]=>???array???(x){        [0]=>"/landscape-image-5.jpg"        [1]=>"/landscape-image-6.jpg"        [2]=>"/landscape-image-7.jpg"        [3]=>"/landscape-image-8.jpg"        [4]=>"/portrait-image-3.jpg"        [5]=>"/portrait-image-4.jpg"     } } 

once i've got array locked down though in real functioning way, i'd put through foreach loop like:

foreach ($myarray $slide): $image1 = $slide['0']; $image2 = $slide['1']; $image3 = $slide['2']; $image4 = $slide['3']; $image5 = $slide['4']; $image6 = $slide['5'];  // blah blah html output, on forth...  endforeach; 

i hope i've provided enough info. in advance here.

here tried, seems sort of working... i'm getting duplicates , such.

$counth = 0; $countv = 0;  foreach ($horizontalimages $key => $horizimg):      $counth++;         foreach ($verticalimages $k =>$vertimg):                      $countv++;                      if ($counth % 4 == 1):               $variables[$counth][] = $horizimg;                               if ($countv % 2 == 1):                                 $variables[$counth][] = $vertimg;                              endif;                      endif;         endforeach;     endforeach;        <pre>     <?php var_dump($variables); ?>     </pre> 

results as

    array(5) {   [1]=>   array(12) {     [0]=>     string(54) "/files/cache/ff89e524684c8ff50103fefd715e6f46_f473.jpg"     [1]=>     string(54) "/files/cache/f5e4eeec3e2e0a7fcaefdc1c756cdee8_f486.jpg"     [2]=>     string(54) "/files/cache/ff89e524684c8ff50103fefd715e6f46_f473.jpg"     [3]=>     string(54) "/files/cache/ff89e524684c8ff50103fefd715e6f46_f473.jpg"     [4]=>     string(54) "/files/cache/08cbd2856e4ecb8f25347540238ff356_f488.jpg"     [5]=>     string(54) "/files/cache/ff89e524684c8ff50103fefd715e6f46_f473.jpg"     [6]=>     string(54) "/files/cache/ff89e524684c8ff50103fefd715e6f46_f473.jpg"     [7]=>     string(54) "/files/cache/67c4cb481a31c03626b7289e66515f93_f489.jpg"     [8]=>     string(54) "/files/cache/ff89e524684c8ff50103fefd715e6f46_f473.jpg"     [9]=>     string(54) "/files/cache/ff89e524684c8ff50103fefd715e6f46_f473.jpg"     [10]=>     string(54) "/files/cache/046cb32b0c062a359a71e24e814d5bff_f485.jpg"     [11]=>     string(54) "/files/cache/ff89e524684c8ff50103fefd715e6f46_f473.jpg"   }   [5]=>   array(12) {     [0]=>     string(54) "/files/cache/40a132f198f0648b4b9794505d8a7201_f474.jpg"     [1]=>     string(54) "/files/cache/f5e4eeec3e2e0a7fcaefdc1c756cdee8_f486.jpg"     [2]=>     string(54) "/files/cache/40a132f198f0648b4b9794505d8a7201_f474.jpg"     [3]=>     string(54) "/files/cache/40a132f198f0648b4b9794505d8a7201_f474.jpg"     [4]=>     string(54) "/files/cache/08cbd2856e4ecb8f25347540238ff356_f488.jpg"     [5]=>     string(54) "/files/cache/40a132f198f0648b4b9794505d8a7201_f474.jpg"     [6]=>     string(54) "/files/cache/40a132f198f0648b4b9794505d8a7201_f474.jpg"     [7]=>     string(54) "/files/cache/67c4cb481a31c03626b7289e66515f93_f489.jpg"     [8]=>     string(54) "/files/cache/40a132f198f0648b4b9794505d8a7201_f474.jpg"     [9]=>     string(54) "/files/cache/40a132f198f0648b4b9794505d8a7201_f474.jpg"     [10]=>     string(54) "/files/cache/046cb32b0c062a359a71e24e814d5bff_f485.jpg"     [11]=>     string(54) "/files/cache/40a132f198f0648b4b9794505d8a7201_f474.jpg"   }   [9]=>   array(12) {     [0]=>     string(54) "/files/cache/c96f867163ec38d83d59350dfdb9518d_f478.jpg"     [1]=>     string(54) "/files/cache/f5e4eeec3e2e0a7fcaefdc1c756cdee8_f486.jpg"     [2]=>     string(54) "/files/cache/c96f867163ec38d83d59350dfdb9518d_f478.jpg"     [3]=>     string(54) "/files/cache/c96f867163ec38d83d59350dfdb9518d_f478.jpg"     [4]=>     string(54) "/files/cache/08cbd2856e4ecb8f25347540238ff356_f488.jpg"     [5]=>     string(54) "/files/cache/c96f867163ec38d83d59350dfdb9518d_f478.jpg"     [6]=>     string(54) "/files/cache/c96f867163ec38d83d59350dfdb9518d_f478.jpg"     [7]=>     string(54) "/files/cache/67c4cb481a31c03626b7289e66515f93_f489.jpg"     [8]=>     string(54) "/files/cache/c96f867163ec38d83d59350dfdb9518d_f478.jpg"     [9]=>     string(54) "/files/cache/c96f867163ec38d83d59350dfdb9518d_f478.jpg"     [10]=>     string(54) "/files/cache/046cb32b0c062a359a71e24e814d5bff_f485.jpg"     [11]=>     string(54) "/files/cache/c96f867163ec38d83d59350dfdb9518d_f478.jpg"   }   [13]=>   array(12) {     [0]=>     string(54) "/files/cache/c09af0f66cb15621163e4018e4c34e72_f479.jpg"     [1]=>     string(54) "/files/cache/f5e4eeec3e2e0a7fcaefdc1c756cdee8_f486.jpg"     [2]=>     string(54) "/files/cache/c09af0f66cb15621163e4018e4c34e72_f479.jpg"     [3]=>     string(54) "/files/cache/c09af0f66cb15621163e4018e4c34e72_f479.jpg"     [4]=>     string(54) "/files/cache/08cbd2856e4ecb8f25347540238ff356_f488.jpg"     [5]=>     string(54) "/files/cache/c09af0f66cb15621163e4018e4c34e72_f479.jpg"     [6]=>     string(54) "/files/cache/c09af0f66cb15621163e4018e4c34e72_f479.jpg"     [7]=>     string(54) "/files/cache/67c4cb481a31c03626b7289e66515f93_f489.jpg"     [8]=>     string(54) "/files/cache/c09af0f66cb15621163e4018e4c34e72_f479.jpg"     [9]=>     string(54) "/files/cache/c09af0f66cb15621163e4018e4c34e72_f479.jpg"     [10]=>     string(54) "/files/cache/046cb32b0c062a359a71e24e814d5bff_f485.jpg"     [11]=>     string(54) "/files/cache/c09af0f66cb15621163e4018e4c34e72_f479.jpg"   }   [17]=>   array(12) {     [0]=>     string(54) "/files/cache/ba56c501e8f83264894d84a53ce056d1_f467.jpg"     [1]=>     string(54) "/files/cache/f5e4eeec3e2e0a7fcaefdc1c756cdee8_f486.jpg"     [2]=>     string(54) "/files/cache/ba56c501e8f83264894d84a53ce056d1_f467.jpg"     [3]=>     string(54) "/files/cache/ba56c501e8f83264894d84a53ce056d1_f467.jpg"     [4]=>     string(54) "/files/cache/08cbd2856e4ecb8f25347540238ff356_f488.jpg"     [5]=>     string(54) "/files/cache/ba56c501e8f83264894d84a53ce056d1_f467.jpg"     [6]=>     string(54) "/files/cache/ba56c501e8f83264894d84a53ce056d1_f467.jpg"     [7]=>     string(54) "/files/cache/67c4cb481a31c03626b7289e66515f93_f489.jpg"     [8]=>     string(54) "/files/cache/ba56c501e8f83264894d84a53ce056d1_f467.jpg"     [9]=>     string(54) "/files/cache/ba56c501e8f83264894d84a53ce056d1_f467.jpg"     [10]=>     string(54) "/files/cache/046cb32b0c062a359a71e24e814d5bff_f485.jpg"     [11]=>     string(54) "/files/cache/ba56c501e8f83264894d84a53ce056d1_f467.jpg"   } } 

$ch = ceil(count($horizontalimages) / 4);// count of quartet (including incomplete tuples) $cv = ceil(count($verticalimages) / 2);// count of doublet (including incomplete tuples)  $c = $ch>$cv ? $ch : $cv; // there more - quartets or doublets?     $out = array();  // pass on long side ($x=0;$x<$c;$x++) {     $tmp1 = $x<$ch ? array_slice($horizontalimages, $x*4, 4) : array(); // no more quartet?     $tmp2 = $x<$cv ? array_slice($verticalimages, $x*2, 2) : array(); // no more doublet?     $out[] = array_merge( $tmp1, $tmp2 ); // fold tuples } 

http://ideone.com/2xao2q


Comments