Massiivi tükk
Massiivitükki (array_chunk) kasutades saame massiivi hõlpsalt jagada mitmemõõtmeliseks massiiviks (massiivide massiiviks).
Massiivi tükki funktsiooni saab kasutada massiivi väiksemateks osadeks jagamiseks, võib-olla töötlemise hõlbustamiseks.
Põhiline näide
Eeldades, et seadistame massiivi alltoodud koodinäite kohaselt ($arrayreal 1), saame selle massiivi tükeldada uueks mitmemõõtmeliseks massiiviks, kasutades array_chunkreal 9 olevat funktsiooni.
Selle koodi käivitamine tooks real 15 tulemuseks mitmemõõtmelise massiivi.
$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
*) *)
**/
Koosseis
$chunked_array = array_chunk( $array, $chunk, $preserve_keys );
Funktsioon array_chunkaktsepteerib kolme parameetrit, $arrayja $chunk( $preserve_keysvalikuline, vaikimisi false). Need on järgmised:
- Parameeter
$arrayaktsepteerib massiivi ja on esialgne massiiv, mida soovime teisendada. - Aktsepteerib täisarvu ja
$chunkon arv, mida kasutame$arrayselle väärtuse osadeks jagamiseks. - Valikuline
$preserve_keysparameeter aktsepteerib tõeväärtust ja säilitab massiivi võtmed, kuitrue.
Funktsioonid ja konkreetsed näited
Säilitage võtmed
Parameetrit uurides $preserve_keysalustab meie eelmine näide iga pesastatud massiivi indeksi 0-st. Kui aga läheksime truesellesse parameetrisse, jääks esialgse massiivi esialgne indeks puutumata:
$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
*) *)
**/
Väljundis on võtmed nüüd järjestikused, nagu need oleksid algses massiivis (0, 1, 2, 3…).
Säilitage võtmed, kui originaalmassiivil on nimega võtmed
Kui meie algsel massiivil on nimelised võtmed, saame võtmed säilitada, et neid meie tükeldatud massiivis säilitada.
Järgmises näites on sellega natuke nalja. Oletame, et oleme kuidagi saanud massiivi, kus on segatud mõned postituse ID-d ja postituste nimed.
Võiksime kasutada array_chunkparameetrit $preserve_keys, trueet jagada need üksikuteks postitusteks.
$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 );
Kui teil on selle massiiviga endiselt lõbus, kujutame ette, kuidas saaksime silmust läbi vaadata $chunked_arrayja väljastada ainult nimed.
foreach( $chunked_array as $key => $nested_array) {
echo $nested_array[ 'name_'. $key ]. PHP_EOL;
}
Suure massiivi tükeldamine töötlemiseks.
Kui meil on väga suur massiiv, saame array_chunkselle jagada väiksemateks tükkideks, mida saaksime seejärel eraldi salvestada. Vaatame, kuidas saaksime seda WordPressis teha:
$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
);
}
Lisalugemist
Lisateavet leiate PHP kasutusjuhendist.