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 }
Comments
Post a Comment