Kolejny dzień, kolejne ćwiczenie w PHP. Tym razem napiszemy funkcję, która pozwoli nam wyświetlić tablicę danych elementów jako HTML z odpowiednią strukturą, podobnie to funkcji the_tags czy the_categories znanych z WordPressa. Do dzieła.
Oto co chcemy osiągnąć. Ten kod:
<?php
$arr = array('Python', 'C#', 'JavaScript', 'PHP');
//(...)
output_arr($arr, "<ul><li>", '</li><li>', '</li></ul>');
?>
Ma nam dać ten wynik:
<ul>
<li>Python</li>
<li>C#</li>
<li>JavaScript</li>
<li>PHP</li>
</ul>
Rzecz pierwsza, nasza funkcja:
function output_arr($arr, $before='', $sep='', $after = ''){
$output = '';
$output .= $before;
//(...)
$output .= $after;
echo $output;
}
Before i after mamy z głowy. Teraz iteracja po elementach tablicy:
function output_arr($arr, $before='', $sep='', $after = ''){
$output = '';
$output .= $before;
foreach($arr as $el) {
$output .= $el;
$output .= $sep;
}
$output .= $after;
echo $output;
}
Prawie dobrze, ale przy ostatniej iteracji nie chcemy separatora:
function output_arr($arr, $before='', $sep='', $after = ''){
$output = '';
$output .= $before;
foreach($arr as $key => $el) {
$output .= $el;
if($key === array_key_last($arr))
break;
$output .= $sep;
}
$output .= $after;
echo $output;
}
Tym sprytnym sposobem jesteśmy w stanie sprawdzić, kiedy jest ostatnia iteracja i wyrwać się z pętli bez separatora przy ostatnim elemencie.
Wszystko działa jak należy.