Come posso prendere un array, si divide per due e creare due liste?

Dire che ho un array

$array

Qualcuno potrebbe farmi un esempio di come utilizzare un ciclo foreach e stampa di due liste dopo l’iniziale matrice totale è stato calcolato, e diviso per due, con la restante parte a sinistra nella seconda lista?

Così, invece di limitarsi a usare il foreach per creare un lungo elenco, sarà la creazione di due liste? in questo modo…

  1. Valore 1
  2. Valore 2
  3. Valore 3

e poi la seconda lista continuerà a stampare in ordine

  1. Valore 4
  2. Valore di 5
  3. Valore 6
InformationsquelleAutor Andy | 2011-03-22

 

7 Replies
  1. 76

    Per ottenere una parte di un array, è possibile utilizzare array_slice:

    $input = array("a", "b", "c", "d", "e");
    
    $len = count($input);
    
    $firsthalf = array_slice($input, 0, $len / 2);
    $secondhalf = array_slice($input, $len / 2);
    • Grazie per questo esempio, guarda come la maggior parte d’accordo con te!
    • Poster originale voluto l’elemento supplementare nella seconda metà, ma se si desidera che l’elemento supplementare nel primo semestre, utilizzare round($len / 2) in entrambi i luoghi in cui si dispone di $len / 2.
    • come circa floor() nel primo semestre e ceil() nel secondo? Un array di 5 elementi saranno suddivisi come segue: 2 / 3
    • Un array di 5 elementi sotto il vostro scenario sarebbe diviso 1,2 e 4,5. Mezzo voce di essere lasciato fuori. Per coincidenza, che era proprio quello che volevo, quindi, grazie!
  2. 15

    Utilizzare array_chunk per dividere l’array in più sub-array, e quindi ciclo sulle.

    Per scoprire come grandi blocchi dovrebbe essere quello di dividere la matrice a metà, utilizzare ceil(count($array) /2).

    <?php
    $input_array = array('a', 'b', 'c', 'd', 'e', 'f');
    $arrays = array_chunk($input_array, 3);
    
    foreach ($arrays as $array_num => $array) {
      echo "Array $array_num:\n";
      foreach ($array as $item_num => $item) {
        echo "  Item $item_num: $item\n";
      }
    }

    Uscita

    Array 0:
      Item 0: a
      Item 1: b
      Item 2: c
    Array 1:
      Item 0: d
      Item 1: e
      Item 2: f
    • Grazie per metterlo in un foreach e.t.c anche se la maggior parte dei ragazzi stanno suggerendo array_slice..
    • Dovrebbe essere ceil(count($array) / 2), non ciel. solo un po ‘ di aiuto.
  3. 2
    $limit=count($array);
    
    $first_limit=$limit/2;
    for($i=0;$i<$first; $i++)
    {
      echo $array[$i];
    }
    foreach ($i=$first; $i< $limit; $i++)
    {
      echo $array[$i];
    }
  4. 2

    Ecco una one-liner, che utilizza array_chunk:

    list($part1, $part2) = array_chunk($array, ceil(count($array) / 2));

    Se avete bisogno di conservare le chiavi di aggiungere vero come terzo argomento:

    list($part1, $part2) = array_chunk($array, ceil(count($array) / 2), true);
  5. 1

    Utilizzando un ciclo foreach si potrebbe fare così:

    $myarray = array("a", "b", "c", "d", "e", "f", "g");
    $array1 = array();
    $array2 = array();
    $i = 1;
    
    foreach ($myarray as $value) {
        if ($i <= count($myarray) / 2) {
            $array1[] = $value;
        } else {
            $array2[] = $value;
        }
        $i++;
    }

    Ma è anche più semplice da usare array_splice

    $myarray = array("a", "b", "c", "d", "e", "f", "g");
    $array1 = array_splice($myarray, 0, floor(count($myarray)/2));
    $array2 = $myarray;
  6. -1

    Questo ha Funzionato per me ha fatto la prima matrice sempre un po ‘ di più. Pensato che questo potrebbe aiutare le persone troppo.

    $firsthalf = array_slice($input, 0, $len / 2 +1);
    $secondhalf = array_slice($input, $len / 2 +1);

Lascia un commento