PHP: создать функцию и вызывать ее изнутри foreach - PullRequest
0 голосов
/ 01 марта 2012

У меня есть

<?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 ?>

Сразу после начала foreach я выполняю некоторую «уборку дома», где подставляю дату, если заголовка нет, и сокращаю текст до 100 символов и т. Д.

Повторять это снова и снова не очень эффективно, поэтому было бы лучше создать функцию, верно?

Мой вопрос: как мне это сделать?

Спасибо за вашу помощь

1 Ответ

4 голосов
/ 02 марта 2012

Попробуйте переписать код следующим образом.Просто добавьте больше необходимых функций в функцию processRowData ().

<?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 } ?>
...