PHP Nested foreach on multi dimensional array

Muhammad Asif Raza

The following array gives me multiple "options" (type, purity, model). Keep in mind that "options" may increase or decrease on next iteration of the loop.

$options = array(
    'type' => array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3'),
    'purity' => array('GOLD', 'SILVER', 'BRONZE'),
    'model' => array('Rough', 'Neat', 'mixed', 'Random'),
);

The output I want to achieve is

Old   GOLD  Rough
Old   GOLD  Neat
Old   GOLD  mixed
Old   GOLD  Random

Old   SILVER  Rough
Old   SILVER  Neat
Old   SILVER  mixed
Old   SILVER  Random

Old   BRONZE  Rough
Old   BRONZE  Neat
Old   BRONZE  mixed
Old   BRONZE  Random

Then this whole scenario goes for 'Latest', 'GOLD 1.0', 'GOLD 1.1',
'GOLD 1.2' and 'GOLD 1.3'(each element of first array)

This way it will generate total 72 combinations (6 * 3 * 4)

WHAT I HAVE ACHIEVED SO FAR.

If I have static "options" (type, purity, model) I can use nested foreach i.e

$type = array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3');
$purity = array('GOLD', 'SILVER', 'BRONZE');
$model = array('Rough', 'Neat', 'mixed', 'Random');

foreach( $type as $base ){
                foreach( $purity as $pure ){
                    foreach( $model as $mdl ){
             echo $base.' '.$pure.' '.$mdl.'<br />';

     }
   }
 }

But I don't know how many foreach loops should I use, as "options" may decrease or increase. So I have to dynamically go through the array. Any help will be much appreciated thanks

Matt Raines
$options = array(
    'type' => array('Old', 'Latest', 'GOLD 1.0', 'GOLD 1.1', 'GOLD 1.2', 'GOLD 1.3'),
    'purity' => array('GOLD', 'SILVER', 'BRONZE'),
    'model' => array('Rough', 'Neat', 'mixed', 'Random'),
);

// Create an array to store the permutations.
$results = array();
foreach ($options as $values) {
    // Loop over the available sets of options.
    if (count($results) == 0) {
        // If this is the first set, the values form our initial results.
        $results = $values;
    } else {
        // Otherwise append each of the values onto each of our existing results.
        $new_results = array();
        foreach ($results as $result) {
            foreach ($values as $value) {
                $new_results[] = "$result $value";
            }
        }
        $results = $new_results;
    }
}

// Now output the results.
foreach ($results as $result) {
    echo "$result<br />";
}

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

PHP foreach loop on multi dimensional array

From Dev

Can't pass Multi-Dimensional array to foreach function - PHP

From Dev

php - Getting Data from multi dimensional array (foreach)

From Dev

multi level dimensional array in php

From Dev

PHP - Switch on a multi dimensional array

From Dev

PHP multi dimensional array intersect

From Dev

Convert Multi dimensional array PHP

From Dev

PHP create multi dimensional array

From Dev

modifying multi dimensional array in PHP

From Dev

PHP Search Multi Dimensional Array

From Dev

Multi dimensional associative array in php

From Dev

foreach loop inside multi-dimensional array

From Dev

store foreach results in multi dimensional array

From Dev

PHP array with a nested foreach

From Dev

Split Multi Dimensional array into single array :PHP

From Dev

PHP array unique on multi dimensional array/object

From Dev

Split Multi Dimensional array into single array :PHP

From Dev

how to multiply array in multi dimensional array in php

From Dev

How to convert multi dimensional array to single dimensional array in php ?

From Dev

Multi-Dimensional Array if array elements are missing in foreach

From Dev

Comparing values in PHP multi-dimensional array

From Dev

php convert a string into multi dimensional array

From Dev

grouping multi-dimensional array in PHP

From Dev

puzzled by format of PHP multi dimensional array

From Dev

Sort a multi-dimensional Array in PHP

From Dev

Multi-dimensional Array - PHP - CodeIgniter

From Dev

To build a multi-dimensional json array in PHP

From Dev

insert a multi-dimensional array to mysql with PHP

From Dev

Dynamic merge on multi-dimensional array in php

Related Related

HotTag

Archive