0Pricing
PHP Academy · Lekcja

Funkcje przekształcania tablic

Stosowanie array_map, array_filter i array_reduce.

Funkcje przekształcania tablic to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

Funkcjonalne transformacje tablic

PHP udostępnia trzy potężne funkcje wyższego rzędu do przekształcania tablic bez używania jawnych pętli:

  • array_map() — przekształca każdy element
  • array_filter() — zachowuje elementy spełniające warunek
  • array_reduce() — redukuje tablicę do pojedynczej wartości

array_map()

Zastosuj funkcję zwrotną do każdego elementu i zwróć nową tablicę:

<?php
$prices = [10, 20, 30, 40];

$doubled = array_map(fn($p) => $p * 2, $prices);
print_r($doubled); // [20, 40, 60, 80]

// Multiple arrays
$a = [1, 2, 3];
$b = [10, 20, 30];
$sums = array_map(fn($x, $y) => $x + $y, $a, $b);
print_r($sums); // [11, 22, 33]

array_filter()

Zachowaj elementy spełniające warunek funkcji zwrotnej. Bez funkcji zwrotnej usuwa wartości uznawane za fałszywe:

<?php
$numbers = [1, 2, 3, 4, 5, 6];

$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($evens); // [1=>2, 3=>4, 5=>6] — keys preserved!

$reindexed = array_values($evens); // re-index

$mixed = [0, 'hello', '', null, false, 42];
print_r(array_filter($mixed)); // [1=>'hello', 5=>42]

array_reduce()

Zredukuj tablicę do pojedynczej wartości, stosując funkcję zwrotną narastająco:

<?php
$cart = [
    ['name' => 'Widget', 'price' => 10],
    ['name' => 'Gadget', 'price' => 25],
    ['name' => 'Doohickey', 'price' => 5],
];

$total = array_reduce($cart, fn($carry, $item) => $carry + $item['price'], 0);
echo $total;  // 40

Łączenie transformacji

Łącz map, filter i reduce, aby tworzyć czytelne potoki przetwarzania danych:

<?php
$scores = [45, 80, 30, 90, 55, 70];

$passingAvg = array_sum(
    array_filter($scores, fn($s) => $s >= 50)
) / count(array_filter($scores, fn($s) => $s >= 50));

echo $passingAvg;  // 74.75

array_map z kluczami

array_map nie przekazuje kluczy. Jeśli potrzebne są zarówno klucz, jak i wartość, należy użyć array_walk:

<?php
$prices = ['apple' => 1.0, 'banana' => 0.5, 'cherry' => 2.0];

$formatted = [];
array_walk($prices, function($price, $name) use (&$formatted) {
    $formatted[$name] = '$' . number_format($price, 2);
});

print_r($formatted);

array_chunk()

Podziel tablicę na fragmenty o określonym rozmiarze:

<?php
$items = range(1, 10);
$batches = array_chunk($items, 3);
print_r($batches);
// [[1,2,3], [4,5,6], [7,8,9], [10]]

array_combine()

Utwórz tablicę asocjacyjną, łącząc tablicę kluczy z tablicą wartości:

<?php
$keys   = ['name', 'age', 'city'];
$values = ['Alice', 30, 'London'];

$person = array_combine($keys, $values);
print_r($person);
// ['name'=>'Alice','age'=>30,'city'=>'London']

array_zip z array_map

PHP nie ma natywnej funkcji zip, ale array_map(null, ...) tworzy strukturę podobną do zip:

<?php
$names  = ['Alice', 'Bob'];
$scores = [90, 85];

$zipped = array_map(null, $names, $scores);
print_r($zipped);
// [['Alice', 90], ['Bob', 85]]

array_map zachowuje klucze

W przypadku pojedynczej tablicy array_map zachowuje klucze. Aby ponownie zindeksować tablicę, należy użyć array_values:

<?php
$assoc = ['a' => 1, 'b' => 2, 'c' => 3];

$result = array_map(fn($v) => $v * 10, $assoc);
print_r($result);
// ['a'=>10, 'b'=>20, 'c'=>30] — keys preserved

array_sum i array_product

Szybkie funkcje redukcji dla tablic liczbowych:

<?php
$nums = [1, 2, 3, 4, 5];

echo array_sum($nums);      // 15
echo array_product($nums);  // 120 (1*2*3*4*5)

// Works with floats too
$prices = [1.5, 2.5, 3.0];
echo array_sum($prices);    // 7.0

Szybkie sprawdzenie

Która funkcja stosuje funkcję zwrotną do każdego elementu i zwraca nową tablicę?

Podsumowanie: funkcje przekształcania tablic

Podsumowanie:

  • array_map() — przekształca każdy element w nową tablicę
  • array_filter() — zachowuje elementy spełniające predykat
  • array_reduce() — redukuje tablicę do pojedynczej wartości skumulowanej
  • array_chunk() — dzieli tablicę na podtablice
  • array_combine() — tworzy tablicę asocjacyjną z kluczy i wartości
  • array_sum/product() — wykonuje szybką redukcję wartości liczbowych

Często zadawane pytania

Czy lekcja „Funkcje przekształcania tablic” jest bezpłatna?

Tak — pełny tekst „Funkcje przekształcania tablic” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje przekształcania tablic”?

Stosowanie array_map, array_filter i array_reduce. Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Funkcje przekształcania tablic”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tablice indeksowane i asocjacyjne
  2. Tablice wielowymiarowe
  3. Sortowanie i wyszukiwanie w tablicach
  4. Funkcje przekształcania tablic
← Powrót do PHP Academy