0

つまり、配列の最初の 3 つの要素を表示しようとしています。常に 3 ですが、少なくとも 3 つの要素があるとは限りません。

だから、私がやったことは if を使用することです:

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

しかし、少なくとも3つのエントリがない場合、「未定義のオフセット」エラーが発生し続けます。解決策を持っている人はいますか?

4

7 に答える 7

3
foreach (array_slice($array, 0, 3) as $item) {
    echo $item;
    ...
}

また:

$i = 1;
foreach ($array as $item) {
    ...

    if ($i++ >= 3) {
        break;
    }
}

foreach存在しないものにはアクセスできないという理由だけで、配列を反復することは常に望ましいことです。

于 2012-09-21T14:15:42.730 に答える
1

次のことを試してください。

<?php for ($i = 0; $i <= 2; $i++) {
   if(isset($post["Project"]["Post"][$i])){ ?>
   ...
<?php }} ?>
于 2012-09-21T14:14:00.417 に答える
1

isset()キーが存在するかどうかを確認するために使用します。

<?php if(isset($post["Project"]["Post"][$i])){ ?>

または、次を使用できます。

$posts = $post["Project"]["Post"];
foreach ($posts as $i => $post) {
   //...
   if ($i === 2) break;
}
于 2012-09-21T14:14:06.720 に答える
0

に変更しますif (isset($post ...

または:

foreach (array_slice($post["Project"]["Post"], 0, 3)) { ...
于 2012-09-21T14:14:23.347 に答える
0
 <?php for ($i = 0; $i <= 2; $i++) { 
  if( isset($post["Project"]["Post"][$i] )){ 
  ...
 } 
}   ?>

<?php...?>すべての行にタグは必要ありません。

于 2012-09-21T14:14:28.410 に答える
0

ifset を試してください。

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

または、最初にカウントを行うことも方法になる可能性があります。

于 2012-09-21T14:14:48.580 に答える
0

前に、どの条件が最初に満たされるか (配列の実際のサイズまたは最大数 - あなたの場合は 3) を計算してから、それらの要素をトラバースします。

$min = min( 3, count( $post["Project"]["Post"] ) );
for ($i = 0; $i < $min; $i++) {
 if($post["Project"]["Post"][$i]){
    ...
 }
}
于 2012-09-21T14:15:06.140 に答える