Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

PHP: Konkatenacja i pętle

środa,

PHP: Konkatenacja i pętle

Konkatenacja w pętlach to konstrukcja często stosowana w programowaniu, polegająca na łączeniu łańcuchów znaków w trakcie iteracji pętli. Umożliwia to dynamiczne budowanie długiego ciągu znaków z mniejszych fragmentów. Przykładem może być tworzenie tekstu z elementów listy lub tablicy. W językach takich jak PHP używa się typowych operatorów konkatenacji (. w PHP) wewnątrz pętli, aby sukcesywnie dodawać nowe elementy do łańcucha.

Istnieje wiele sposobów na wykonywanie konkatenacji. Prezentowane przykłady to kilka spośród nich. Wybór optymalnego rozwiązania zależy od okoliczności.

We wszystkich przykładach generowana jest ta sama tabela HTML zawierająca testowe dane. Składnia jest bardzo podobna, w każdym przebiegu pętli foreach łączonych jest kilka łańcuchów znaków. Efekt działania każdego prezentowanego rozwiązania znajduje się na końcu artykułu.

Testowe dane

Wykorzystane w przykładach dane to struktura zawierająca dane na temat imienia i nazwiska w postaci tablicy dwuwymiarowej.

$names = [
  ['Henry','Franklin'],
  ['Tyler','Watts'],
  ['Laith','Mcfadden'],
  ['Brendan','Pratt'],
  ['Marsden','Warren'],
  ['Jackson','Harris'],
  ['Edan','Gordon'],
  ['Chadwick','Rojas'],
  ['Josiah','Henson'],
  ['Raymond','Gonzales']
];

Operator konkatenacji

W języku PHP operatorem konkatenacji jest kropka (.). Jego działanie prezentuje poniższy przykład. Jest to prawdopodobnie najpopularniejsze rozwiązanie.

echo '<table>';
foreach ($names as $name) {
	echo '<tr><td>' . $name[0] . '</td><td>' . $name[1] . '</td></tr>';
}
echo '</table>';

Funkcja printf

Kolejny sposób to skorzystanie z funkcji printf(). Jej pierwszym argumentem jest szablon zawierający pola do wypełnienia. W przykładzie wykorzystano dwa pola %s oznaczające łańcuch znaków. Oznacza to, że należy dostarczyć w ich miejsce wartości w postaci dwóch dodatkowych argumentów funkcji.

echo '<table>';
foreach ($names as $name) {
	printf('<tr><td>%s</td><td>%s</td></tr>', $name[0], $name[1]);
}
echo '</table>';

Funkcja vprintf

Funkcja vprintf to odmiana printf. Drugi argument to tablica zawierająca dane. Rozwiązanie jest dość wygodne w przypadku większej ilości pól. Ważne jest, aby zadbać o właściwą kolejność elementów tablicy.

echo '<table>';
foreach ($names as $name) {
	vprintf('<tr><td>%s</td><td>%s</td></tr>', $name);
}
echo '</table>';

Funkcja printf w połączeniu z implode

Optymalne i zwięzłe rozwiązanie w przypadku dużej ilości pól. Poniższy kod bez żadnej modyfikacji może obsłużyć np. 50 i więcej pól tabeli. Funkcja implode łączy elementy tablicy za pomocą łańcucha znaków podanego jako pierwszy argument. Ważne jest, aby zadbać o właściwą kolejność elementów tablicy.

echo '<table>';
foreach ($names as $name) {
	printf('<tr><td>%s</td></tr>', implode('</td><td>', $name));
}
echo '</table>';

Wyskakiwanie z kodu HTML

Kiedy interpreter PHP przetwarza plik, wyszukuje kodu PHP na podstawie jego znaczników. Wszystko poza nimi jest ignorowane przez parser. Dzięki tej własności można zagnieżdżać kod PHP w dowolnym dokumencie tak jak w poniższym przykładzie. Krótkie znaczniki (<?=) nie w każdej konfiguracji będą dostępne. Można je zastąpić standardowymi znacznikami (<?php) i instrukcją echo, jednak wtedy rozwiązanie nie będzie już tak zwięzłe.

<table>
<?php foreach ($names as $name) { ?>
  <tr>
  	  <td><?=$name[0]?></td>
  	  <td><?=$name[1]?></td>
  </tr>
<?php } ?> 
</table>
HenryFranklin
TylerWatts
LaithMcfadden
BrendanPratt
MarsdenWarren
JacksonHarris
EdanGordon
ChadwickRojas
JosiahHenson
RaymondGonzales
Artykuł: Harmonogram egzaminów maturalnych

Harmonogram egzaminów maturalnych

Artykuł: Staże w Hiszpanii

Staże w Hiszpanii

Artykuł: Conformité Européenne

Conformité Européenne

Artykuł: Display Stream Compression

Display Stream Compression

Artykuł: High Dynamic Range

High Dynamic Range

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły