Array Chunk
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:
- Parametri
$arrayhyväksyy taulukon ja on alkuperäinen taulukko, jonka haluamme muuntaa. - Hyväksyy kokonaisluvun, ja se on luku
$chunk, jota käytämme jakamaan$arraytämän arvon osiin. - Valinnainen
$preserve_keysparametri hyväksyy loogisen arvon ja säilyttää taulukon avaimet, jostrue.
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.