在不知道内容是否存在的情况下浏览数组

时间:2012-09-21 14:12:36

标签: php arrays

那么,做什么是尝试显示数组的第一个元素。总是3.但是,并不总是至少有3个元素。

所以,我所做的就是使用if:

<?php for ($i = 0; $i <= 2; $i++) { ?>
  <?php if($post["Project"]["Post"][$i]){ ?>
    ...
  <?php } ?>
<?php } ?>

但是,当至少没有3个条目时,我一直有“未定义的偏移量”错误。有解决方案的人吗?

7 个答案:

答案 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)

尝试ifs​​et。

<?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]){
    ...
 }
}