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代码>,而不是括号{…}
,因为它更可读。