✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Fragment tablicy

16

Używając fragmentu tablicy (array_chunk) możemy łatwo podzielić tablicę na tablicę wielowymiarową (tablicę tablic).

Funkcji fragmentu tablicy można użyć do podzielenia tablicy na mniejsze części, być może w celu ułatwienia przetwarzania.

Podstawowy przykład

Zakładając, że skonfigurujemy tablicę zgodnie z poniższym przykładem kodu ($arrayw wierszu 1), możemy podzielić tę tablicę na nową tablicę wielowymiarową za pomocą array_chunkfunkcji w wierszu 9.

Uruchomienie tego kodu spowodowałoby powstanie tablicy wielowymiarowej w wierszu 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
 *) *)
 **/

Kompozycja

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

Funkcja array_chunkakceptuje trzy parametry i (opcjonalne $array, domyślnie false). Są to:$chunk``$preserve_keys

  1. Parametr $arrayprzyjmuje tablicę i jest tablicą początkową, którą chcemy przekształcić.
  2. Akceptuje liczbę całkowitą i $chunkjest liczbą, której używamy do dzielenia $arrayna części tej wartości.
  3. Opcjonalny $preserve_keysparametr akceptuje wartość logiczną i zachowuje klucze tablicy, jeśli true.

Funkcje i konkretne przykłady

Zachowaj klucze

Eksplorując $preserve_keysparametr, nasz poprzedni przykład rozpoczyna indeks każdej zagnieżdżonej tablicy od 0. Jednak gdybyśmy przeszli truedo tego parametru, oryginalny indeks tablicy początkowej pozostałby nienaruszony:

$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
 *) *)
 **/

Na wyjściu klucze są teraz sekwencyjne, tak jak w oryginalnej tablicy (0, 1, 2, 3…).

Zachowaj klucze, gdy oryginalna tablica ma nazwane klucze

Jeśli nasza oryginalna tablica ma nazwane klucze, możemy zachować klucze, aby zachować je w naszej tablicy podzielonej na fragmenty.

Poniższy przykład ma z tego trochę zabawy. Powiedzmy, że w jakiś sposób otrzymaliśmy tablicę z wymieszanymi ze sobą kilkoma identyfikatorami postów i nazwami postów.

Możemy użyć array_chunkparametru $preserve_keysustawionego na, trueaby podzielić je na poszczególne posty.

$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 ); 

Wciąż dobrze bawiąc się tą tablicą, wyobraźmy sobie, jak możemy przejść przez $chunked_array, i wypisać tylko nazwy.

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

Chunkowanie dużej tablicy do przetwarzania.

Jeśli mamy bardzo dużą tablicę, możemy array_chunkpodzielić ją na mniejsze kawałki, które następnie będziemy mogli przechowywać osobno. Zobaczmy, jak możemy to zrobić w WordPressie:

$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
    );
}

Dalsza lektura

Więcej informacji można znaleźć w podręczniku PHP.

Źródło nagrywania: wholesomecode.ltd

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów