2016-11-15 10 views
0

私のファンキーなコードは何が問題なのですか?私はこのexplode()give me PHPの未定義オフセット

$gr = preg_replace('#[^a-z0-9-,.]#i', '', $_POST['gr']); 
    $array_gr = explode(',',$gr); 
    if(count($array_gr)>=1){ 
     for($i=0;$i<= count($array_gr);$i++){ 
     $corentimg=$array_gr[$i]; 
...... 

を書いて、私は自分のコードを実行したとき、私は私がNotice Undefined offset +欲しいものを得る私のPHPのスクリップで309534368.gif,400559388.jpg,859954067.jpg,821646469.jpg :この行の $corentimg=$array_gr[$i];

私はアヤックスに文字列
フォアEXを使用したポスト

なぜですか?

+4

4つの項目は '0'から始まり、最大インデックスは3ですが、count()は4を返します。 – AbraCadaver

+1

'$ i

+0

My ajax stringはN long –

答えて

2

コードに条件エラーがある場合は、<=<に置き換えてください。 forループで

for($i=0; $i< count($array_gr);$i++){ 
     $corentimg=$array_gr[$i]; 
............ 
+0

あなたはファンキーな偉大な男です!ありがとう!! –

+0

ようこそ@TomerTouitou、答えを受け入れてください。 :) – Tiger

+0

私は受け入れる前に待つべきであるneet –

0

怒鳴るような$i < count($array_gr)ない$i <= count($array_gr)次のようになります。

<?php 
$gr = preg_replace('#[^a-z0-9-,.]#i', '', $_POST['gr']); 
$array_gr = explode(',',$gr); 
if(count($array_gr)>=1){ 
    for($i=0;$i<count($array_gr);$i++){ 
    $corentimg=$array_gr[$i]; 
    } 
} 
?> 
+0

あなたの助けに感謝Razibアルマムン!タイガーはすでに私に答えます –

+0

あなたは歓迎です@TomerTouitou –

1

タイガーとRazibの答えは完全に正しいですが、私はあなたがエラーを取得している理由を実際に説明して答えを提出することを望んでいましたいずれかの方法。

まず、< =を<に変更すると問題は解決しますが、その理由は何ですか?


は、我々はいくつかの単語を含む配列を定義する例ここで

としてこの配列を取る:

$array = ["cake","apple","tree","log"]; 

上記の配列は、その中の4「の要素」がありますケーキを、リンゴ、木、ログ。

のvar_dump(または任意の他)を経由して、アレイを印刷すると、次のことを明らかにします:

0: cake 
1: apple 
2: tree 
3: log 

"問題"

数($配列)は4を返します使用して、これは配列内に4つの要素があるので正しいですが、PHPのインデックスはゼロから始まるため、実際には間違っています。

正しいサイズは、あなたのforloopは、配列の各要素の周りにループするとして、それはヒット数($配列)-1(= 3)

次のようになります。

要素の位置5である
$item = $array[4] 

を(私たちはゼロから開始される)、この位置は、このように、あなたは「不定オフセット」エラーを取得し、存在しない


修正

コードを< =(より小さいか等しい)から<(小なり)に変更すると、for루프が0から4にループするため、問題が修正されます(3上記の配列はPHPの配列の正しいサイズです)

<(またはcount($ array)-1)を使用する理由PHP配列に必要なオプション

+0

うわー、バッター説明。あなたのためにUpvote。 –

+0

あなたの説明のためにフィリップスに感謝します!それは他の人を助けるだろう、私は気づかなかった。 –

関連する問題