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.