2016-04-29 9 views
-2

こんにちは、まずスクリプトをチェックしてください。私のForループで "-1"が必要な理由

for($x = 0;$x<=count($outlet);$x++) 
     { 
     echo $x." insert into arealeader 
       (
      [Kodearealeader],[OutletCode],[NipLeader],[NipChief],[NipRM],[CutOff],[flag],[CreatedBy],[CreatedDate]) 
       values ('$generatecode[$x]','$outlet[$x]','$leader[$x]','$chief[$x]','$regionalmanager[$x]','$periode','1','$nip_login','$DateNow->time' 
      )<br>"; 
     } 

私の問題は、フォームからコンセントを2つだけ挿入するときです。結果には3行が表示されます。しかし、それは正常に動作します私はこのfor($x = 0;$x<=count($outlet)-1;$x++)

結果を行う際

0 insert into arealeader ([Kodearealeader],[OutletCode],[NipLeader],[NipChief],[NipRM],[CutOff],[flag],[CreatedBy],[CreatedDate]) values ('K','CF-LBS','','4141413','9191','','1','1602762','2016-04-29 10:09:56.640') 
1 insert into arealeader ([Kodearealeader],[OutletCode],[NipLeader],[NipChief],[NipRM],[CutOff],[flag],[CreatedBy],[CreatedDate]) values ('L','K-ATR2','','4141413','9191','','1','1602762','2016-04-29 10:09:56.640') 
2 insert into arealeader ([Kodearealeader],[OutletCode],[NipLeader],[NipChief],[NipRM],[CutOff],[flag],[CreatedBy],[CreatedDate]) values ('0','','','','','','1','1602762','2016-04-29 10:09:56.640') 

echo count($outlet)結果は、あなたがこの状態でxで一度echoを実行後0にxを初期化している2

+0

php配列はインデックスが '0'です。したがって、 '$ array = [1,2,3]'の基本配列は 'count($ array)'の '3'を持ちますが、インデックスは' 1,2,3'ではなく '0,1,2'です。あなたのループで '-1'を使用して' 0'インデックスの数を取得します。 '3'の代わりに' 2'を使います。 – Sean

+1

@Seanさて、それ以上のことは... $ x deceze

+2

または単にforeach()を使ってphpにインデックスの処理をさせてください –

答えて

3

です。 x次に、1に増分します.1はまだ2以下です。したがって、echoが再び実行されます。 xは再び2に増分します.2はまだ2以下です。したがって、echoが3回実行されます。おそらく何をしたいのでしょうか?ゼロインデックス配列の各インデックスに対してループを1回実行するためには、実際には「より小さい」、「それ以下」ではなく、$x<count($outlet)と置き換えてください($x<=count($outlet))。

関連する問題