所以,à 要做的是尝试显示数组的第 3 个元素。总是 3。但是,并不总是至少有 3 个元素。
所以,我所做的是使用 if :
<?php for ($i = 0; $i <= 2; $i++) { ?>
<?php if($post["Project"]["Post"][$i]){ ?>
...
<?php } ?>
<?php } ?>
但是,当至少没有 3 个条目时,我一直有“未定义的偏移量”错误。有解决方案的人吗?
foreach (array_slice($array, 0, 3) as $item) {
echo $item;
...
}
或者:
$i = 1;
foreach ($array as $item) {
...
if ($i++ >= 3) {
break;
}
}
foreach
迭代数组总是更可取,正是因为您无法访问任何不存在的东西。
尝试以下操作:
<?php for ($i = 0; $i <= 2; $i++) {
if(isset($post["Project"]["Post"][$i])){ ?>
...
<?php }} ?>
用于isset()
检查密钥是否存在。
<?php if(isset($post["Project"]["Post"][$i])){ ?>
或者你可以使用:
$posts = $post["Project"]["Post"];
foreach ($posts as $i => $post) {
//...
if ($i === 2) break;
}
将其更改为if (isset($post ...
或者:
foreach (array_slice($post["Project"]["Post"], 0, 3)) { ...
<?php for ($i = 0; $i <= 2; $i++) {
if( isset($post["Project"]["Post"][$i] )){
...
}
} ?>
您不需要<?php...?>
为每一行添加标签。
试试ifset。
<?php for ($i = 0; $i <= 2; $i++) { ?>
<?php if(isset($post["Project"]["Post"][$i])){ ?>
...
<?php } ?>
<?php } ?>
或者,先进行计数也可能是一种方法。
之前计算,首先满足哪个条件(数组的实际大小或最大数量 - 在您的情况下为 3),然后遍历这些元素:
$min = min( 3, count( $post["Project"]["Post"] ) );
for ($i = 0; $i < $min; $i++) {
if($post["Project"]["Post"][$i]){
...
}
}