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