PHP:创建函数并从foreach中调用它

PHP:创建函数并从foreach中调用它,php,function,foreach,Php,Function,Foreach,我有这个 <?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>

我有这个

<?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个字符等等

反复重复这一点不是很有效,所以最好创建一个函数,对吗

我的问题是我如何做到这一点


谢谢你的帮助

试着像这样重写你的代码。只需向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 } ?>

试着像这样重写代码。只需向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 } ?>


即使将其放入函数中,代码仍将执行相同的次数。只有在其他地方使用相同的代码时,才能将其放入函数中。这是什么意思?你能详细说明一下吗?这是我不想做的。我想在其他地方使用这个函数。我正在使用Codeigniter。它允许我定义一个函数并全局加载它,这样我的所有脚本都可以访问它。即使你把它放在一个函数中,代码仍然会执行相同的次数。只有在其他地方使用相同的代码时,才能将其放入函数中。这是什么意思?你能详细说明一下吗?这是我不想做的。我想在其他地方使用这个函数。我正在使用Codeigniter。它允许我定义一个函数并全局加载它,这样我的所有脚本都可以访问它。您可以通过引用
processRowData(&$row)
传递变量,然后您不必返回它,因为它会在运行中更改。此外,在混合html/php中,最好使用
foreach():
endforeach
,而不是方括号
{…}
,因为它更可读。您可以通过引用
processRowData(&$row)
传递变量,然后不必返回它,因为它会在运行中更改。此外,在混合html/php中,最好使用
foreach():
endforeach,而不是括号
{…}
,因为它更可读。