crear matriz multidimensional utilizando un bucle foreach

Estoy tratando de crear una matriz multidimensional en PHP utilizando un bucle foreach. Aquí está el código hasta el momento:

$levels = array('low', 'medium', 'high');
$attributes = array('fat', 'quantity', 'ratio', 'label');

foreach ($levels as $key => $level):
       foreach ($attributes as $k =>$attribute):
             $variables[] = $attribute . '_' . $level;
       endforeach;
endforeach;

echo '<pre>' . print_r($levels,1) . '</pre>';   
echo '<pre>' . print_r($variables,1) . '</pre>';    

El resultado de este código es de una sola dimensión de la matriz; sin embargo, esa no es la intención. El deseado de la matriz debe tener este aspecto:

crear matriz multidimensional utilizando un bucle foreach

Cómo si el código modificado para lograr el objetivo?

  • Estás tratando de combinar dos matrices en una sola matriz, o crear una nueva matriz a partir de los datos en los dos matrices?
InformationsquelleAutor knot22 | 2013-08-08

3 Kommentare

  1. 14

    Estás aaalmost allí. Sólo añadir que el nivel de la creación de la matriz 🙂

    $levels = array('low', 'medium', 'high');
    $attributes = array('fat', 'quantity', 'ratio', 'label');
    
    foreach ($levels as $key => $level):
           foreach ($attributes as $k =>$attribute):
                 $variables[$level][] = $attribute . '_' . $level; //changed $variables[] to $variables[$level][]
           endforeach;
    endforeach;
    
    echo '<pre>' . print_r($levels,1) . '</pre>';   
    echo '<pre>' . print_r($variables,1) . '</pre>';  

    Salida

    Array
    (
        [low] => Array
            (
                [0] => fat_low
                [1] => quantity_low
                [2] => ratio_low
                [3] => label_low
            )
    
        [medium] => Array
            (
                [0] => fat_medium
                [1] => quantity_medium
                [2] => ratio_medium
                [3] => label_medium
            )
    
        [high] => Array
            (
                [0] => fat_high
                [1] => quantity_high
                [2] => ratio_high
                [3] => label_high
            )
    
    )
    • Tengo este problema. Necesito algo como que de un foreach. $arrOptions = array( array( 'value' => 'value1', 'label' => 'label1' ) ); Foreach valor y la etiqueta es la misma variable. Lo que yo trato es $arrOptions = array(); foreach($daterange as $option) { $arrOptions[value] = $option->format; $arrOptions[label] = $option->format; }
  2. 4
    <?php
    $levels = array('low', 'medium', 'high');
    $attributes = array('fat', 'quantity', 'ratio', 'label');
    
    $ret = array();
    foreach ($levels as $level) {
      $ret[$level] = array();
      foreach($attributes as $attribute) {
        $ret[$level][] = $attribute.'_'.$level;
        }
      }
    
    var_dump($ret);

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein