我花了几个小时摔跤,但仍然感到困惑.我有一个简单的if else语句,如下所示:
<?php foreach($authors as $author): ?>
<?php if (!$authors): ?>
<p>No authors found</p>
<?php else: ?>
<p><a href="<?= base_url('pages/author/'.$author->id); ?>"><?= $author->name; ?></a></p>
<?php endif; ?>
<?php endforeach; ?>
Run Code Online (Sandbox Code Playgroud)
$ authors是数据库搜索的结果(使用Codeigniter查询构建器类,虽然我不相关),因此我相信一个对象数组.如果它找到数据,代码工作正常.但是,如果搜索没有返回任何内容,则"未找到作者"不会显示.在零搜索之后,$ authors的var_dump给出:
array (size=0)
empty
Run Code Online (Sandbox Code Playgroud)
我也尝试将if条件写为:
(!isset($authors))
(empty($authors))
($authors == null)
Run Code Online (Sandbox Code Playgroud)
但没有任何作用.感激如果有人能提出正在发生的事情.
if(!$authors)在之前应该去foreach循环,即把foreach循环里面else块,就像这样:
<?php if (!$authors): ?>
<p>No authors found</p>
<?php else: ?>
<?php foreach($authors as $author): ?>
<p><a href="<?= base_url('pages/author/'.$author->id); ?>"><?= $author->name; ?></a></p>
<?php endforeach; ?>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)
在您的原始示例中,您$authors在每次迭代中测试了数组的空白foreach,但由于foreach不对空iterables 进行迭代,因此永远不会到达代码.在尝试迭代之前,你想要测试空虚,并且只想测试一次.
虽然我认为!$authors应该适用于空阵列,但我可能会使用empty($authors)或count($author) == 0类似的东西更明确,但这只是个人偏好.
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |