jamjam
jamjam

Reputation: 3269

PHP : Create function and call it from within a foreach

I have this

<?php 

foreach ($results as $row):

    if ($row['title'] == "") $row['title'] = date('d-m-Y', strtotime($row['date']));
    if (strlen($row['text']) > 100) $row['text'] = substr($row['text'], 0, 100) . "...";

?>
        <div>
            <a href="<?php echo $row['url'] ?>">
            <img src="<?php echo $row['image'] ?>" alt="<?php echo $row['title'] ?>" />
            <h1><?php echo $row['title'] ?></h1>
            <p><?php echo $row['text']; ?></p>
            </a>
        </div>
<?php endforeach ?>

Right after the foreach starts I do some "house cleaning" where I substitute the date if there is no title and reduce the text to 100 characters etc.

Repeating this over and over is not very efficient, so it would be better to create a function right?

My question is how do I do this?

Thanks for your help

Upvotes: 0

Views: 5106

Answers (1)

Werner
Werner

Reputation: 3663

Try rewriting your code like this. Just add more of your required functionality to the processRowData() function.

<?php

function processRowData($row) {
    if ($row['title'] == "") {
        $row['title'] = date('d-m-Y', strtotime($row['date']));
    }
    // Do more with other elements from $row ...
    // when done, return the modified $row array
    return $row;
}

?>

<?php

foreach ($results as $row) {
    // Alter the row data with your function
    $row = processRowData($row);
?>

<div>
    <a href="<?php echo $row['url'] ?>">
    <img src="<?php echo $row['image'] ?>" alt="<?php echo $row['title'] ?>" />
    <h1><?php echo $row['title'] ?></h1>
    <p><?php echo $row['text']; ?></p>
    </a>
</div>


<?php } ?>

Upvotes: 4

Related Questions