$products = array(
  'paper' => "Paper Section" => array
  (
    'copier' => "Copier and Multipurpose",
    'inkjet' => "Inkjet Printer",
  ),
  'pens' => "Pen Section" => array
  (
    'ball' => "Ballpoint Pens",
    'hilite' => "Highlighters"
  ),
  'misc' => "Miscellaneous Section" => array
  (
    'tape' => "Sticky Tape",
    'glue' => "Adhesive"
  )
);

echo "<pre>";
foreach ($products as $section => $items)
  foreach ($items as $key => $value)
    echo "$section:\t$key\t($value)<br />";
echo "</pre>";

Obviamente, lo que yo estoy tratando de hacer aquí es la asignación de índices a la $sección set, y me estoy poniendo de los errores para tratar de hacer eso. Hay otra manera de hacerlo, o es que simplemente no es posible en PHP?

  • Oh, sí, esta pregunta es la bomba. 2,500 puntos de vista y -1 de valoración. jajaja

6 Comentarios

  1. 8
    $products = array(
      'paper' => array(
        'title' => "Paper Section",
        'copier' => "Copier and Multipurpose",
        'inkjet' => "Inkjet Printer"
      )
    );   

    Algo como la de arriba, por ejemplo. Otra opción es añadir otra dimensión:

    $products = array(
      'paper' => array(
        'meta' => array(
            'title' => "Paper Section"
        ),
        'data' => array(
            'copier' => "Copier and Multipurpose",
            'inkjet' => "Inkjet Printer"
        )
      )
    );
    • Gracias. Esto hace un montón de sentido.
    • He seleccionado esta la respuesta de porque la segunda solución en la otra respuesta no trabajo.
  2. 1
    <?php
    $products = array(
        'paper' => array(
        //--------^^^^^
            'Paper Section' => array(
                'copier' => 'Copier and Multipurpose',
                'inkjet' => 'Inkjet Printer',
            ),
        )
    );
    var_dump($products);

    PS: es más fácil cuando el formato (y guión), el código mejor.

    • Me gusta la forma en que me sangría es mejor porque es más fácil de leer.
  3. 1

    No entender realmente lo que está tratando de lograr, voy a darle un tiro. A continuación, he reestructurado los datos:

    $products = array(
      'paper' => array(
        'Paper Section',
        array (
          'copier' => "Copier and Multipurpose",
          'inkjet' => "Inkjet Printer"
        )
      ),
      'pens' => array(
        'Pen Section',
        array (
          'ball' => "Ballpoint Pens",
          'hilite' => "Highlighters"
        )
      ),
      'misc' => array(
        'Miscellaneous Section',
        array (
          'tape' => "Sticky Tape",
          'glue' => "Adhesive"
        )
      )
    );
    
    foreach ($products as $sectionKey => $line) {
      foreach ($line[1] as $key => $value) {
        echo $sectionKey . ":\t" . $line[0] . ":\t$key\t($value)\n";
      }
    }

    Puede vea una demostración en Ideone.

  4. 1
        $products = array(
          'paper' => array(
            "Paper Section" => array
              (
                'copier' => "Copier and Multipurpose",
                'inkjet' => "Inkjet Printer",
              )
           ),
          'pens' => array(
            "Pen Section" => array
            (
                'ball' => "Ballpoint Pens",
                'hilite' => "Highlighters"
              ),
          ),
          'misc' => array(
            "Miscellaneous Section" => array
            (
                'tape' => "Sticky Tape",
                'glue' => "Adhesive"
              )
          )
    );

    Como los otros chicos se han mencionado, es necesario poner envuelve en otro array asociativo.

    Sin embargo, tengo la sensación de que usted está tratando de asignar la más profunda matriz asociativa con dos teclas a la vez. Si ese es el caso, usted no puede hacerlo en la declaración del array en PHP, tendrás que hacer algo un poco más de forma manual, como:

    $products = array();
    $products['Misc'] = $products['Miscellaneous Section'] = array(
          'tape' => "Sticky Tape",
          'glue' => "Adhesive"
    );
    
    var_dump($products);
    • El segundo fragmento de código devuelve un error: Parse error: syntax error, inesperado T_VARIABLE en /código/cUKR0g en la línea 3, codepad.viper-7.com/cUKR0g
  5. 1

    Bueno, lejos de ser evidente para mí lo que usted está tratando de hacer, pero su sintaxis es incorrecta: Un array es construir como 'key'=>'value', porque es un par clave/valor Que tiene:

    'paper' => "Paper Section" => array()

    key->value->value. Que no va a funcionar.

    también:

    echo "
    ";

    Podría ser:

    echo "\n";
    • Supongo que es porque las matrices se almacenan en el mismo espacio de nombres como cadenas o algo? En realidad estaba pensando en valor->clave>valor o clave->valor->subvalue…. Por supuesto, todavía estoy aprendiendo. De todos modos, gracias por la información.
    • Que me da los espacios en blanco cuando tengo que hacer <pre> y <br / >
    • Ah. Fija el código -> el uso de la {} en el botón de wysiwig bar cosita al escribir código, es la manera más fácil 🙂
    • Gracias. Eso me molesta mucho. X// me Alegro de que por fin la manera de conseguir alrededor de él.

Dejar respuesta

Please enter your comment!
Please enter your name here