✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Array Chunk

14

Käyttämällä taulukkopalaa (array_chunk) voimme helposti jakaa taulukon moniulotteiseksi taulukoksi (taulukoiden matriisi).

Matriisipalafunktiolla voitaisiin jakaa taulukko pienempiin osiin, ehkä helpottamaan sen käsittelyä.

Perusesimerkki

Olettaen, että asetamme taulukon alla olevan koodiesimerkin mukaisesti ($arrayrivillä 1), voimme jakaa tämän taulukon uudeksi moniulotteiseksi taulukoksi array_chunkrivin 9 funktiolla.

Tämän koodin suorittaminen johtaisi moniulotteiseen taulukkoon rivillä 15.

$array = [
    'Post 0', 
    'Post 1', 
    'Post 2', 
    'Post 3', 
    'Post 4', 
    'Post 5',
];
$chunked_array = array_chunk( $array, 2 );
print_r( $chunked_array ); // Output the new array.

/**
 * Output:
 *
 * Array
 * (*   [0] => Array
 * (*          [0] => Post 0
 *          [1] => Post 1
 *) *   [1] => Array
 * (*          [0] => Post 2
 *          [1] => Post 3
 *) *   [2] => Array
 * (*           [0] => Post 4
 *           [1] => Post 5
 *) *)
 **/

Sävellys

$chunked_array = array_chunk( $array, $chunk, $preserve_keys );

Funktio array_chunkhyväksyy kolme parametria, $arrayja $chunk( $preserve_keysvalinnainen, oletuksena false). Nämä ovat seuraavat:

  1. Parametri $arrayhyväksyy taulukon ja on alkuperäinen taulukko, jonka haluamme muuntaa.
  2. Hyväksyy kokonaisluvun, ja se on luku $chunk, jota käytämme jakamaan $arraytämän arvon osiin.
  3. Valinnainen $preserve_keysparametri hyväksyy loogisen arvon ja säilyttää taulukon avaimet, jos true.

Ominaisuudet ja erityiset esimerkit

Säilytä avaimet

Parametria tutkiessa $preserve_keysedellinen esimerkkimme aloittaa jokaisen sisäkkäisen taulukon indeksin nollasta. Jos kuitenkin siirrymme truetähän parametriin, alkuperäisen taulukon alkuperäinen indeksi säilyisi ennallaan:

$array = [
    'Post 0', 
    'Post 1', 
    'Post 2', 
    'Post 3', 
    'Post 4', 
    'Post 5',
];
$chunked_array = array_chunk( $array, 2, true );
print_r( $chunked_array ); // Output the new array.

/**
 * Output:
 *
 * Array
 * (*   [0] => Array
 * (*          [0] => Post 0
 *          [1] => Post 1
 *) *   [1] => Array
 * (*          [2] => Post 2
 *          [3] => Post 3
 *) *   [2] => Array
 * (*           [4] => Post 4
 *           [5] => Post 5
 *) *)
 **/

Tulosteessa avaimet ovat nyt peräkkäisiä, kuten ne olisivat alkuperäisessä taulukossa (0, 1, 2, 3…).

Säilytä avaimet, kun alkuperäisessä ryhmässä on nimettyjä avaimia

Jos alkuperäisessä taulukossamme on nimettyjä avaimia, voimme säilyttää avaimet säilyttääksemme ne lohkotussa taulukossamme.

Seuraava esimerkki on hieman hauska tämän kanssa. Oletetaan, että meillä on jollain tapaa taulukko, jossa on sekoitettuja postitunnuksia ja viestien nimiä.

Voisimme array_chunkjakaa ne yksittäisiin viesteihin $preserve_keysparametrin kanssa .true

$array = [
    'id_0'   => '10', 
    'name_0' => 'Post 1', 
    'id_1'   => '20', 
    'name_1' => 'Post 2', 
    'id_2'   => '30', 
    'name_2' => 'Post 3',
];
$chunked_array = array_chunk( $array, 2, true);
print_r( $chunked_array ); 

Pidämme silti hauskaa tämän taulukon kanssa. Kuvittelemme kuinka voisimme käydä läpi $chunked_arrayja tulostaa vain nimet.

foreach( $chunked_array as $key => $nested_array) {
    echo $nested_array[ 'name_'. $key ]. PHP_EOL;
}

Suuren joukon paloittaminen käsittelyä varten.

Jos meillä on erittäin suuri joukko, voimme array_chunkjakaa sen pienemmiksi paloiksi, jotka voimme sitten tallentaa erikseen. Katsotaanpa, kuinka voimme tehdä tämän WordPressissä:

$original_array = [...]; 
$post_id        = get_the_ID();
$chunked_array  = array_chunk( $original_array, 10, true );

foreach( $chunked_array as $key => $array) {
    update_post_meta( 
        $post_id,
        '_wc_chunked_array_partial_'. $post_id,
        $array
    );
}

Lue lisää

Lisätietoa voit lukea PHP – oppaasta.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja