Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

E14 - Konkatenacja w PHP

wtorek,

E14 - Konkatenacja w PHP

W programowaniu konkatenacja to łączenie kilku wyrażeń w jedno. Jest to typowa operacja wykonywana podczas prezentowania danych. 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
Pomniki upamiętniające powstanie warszawskie

Pomniki upamiętniające powstanie warszawskie

Pomnik Powstania Warszawskiego

Pomnik Powstania Warszawskiego

Stanisław Sędziak

Stanisław Sędziak

Krystyna Krahelska

Krystyna Krahelska

Zdobycie Poczty Głównej

Zdobycie Poczty Głównej

Działo pancerne „Chwat”

Działo pancerne „Chwat”

Nasze technikum

Szkoły dla dorosłych

Pełna oferta edukacyjna