2016-11-15 9 views
0

내 펑키 코드가 잘못 되었나요? 내 PHP는 전대에서 309534368.gif,400559388.jpg,859954067.jpg,821646469.jpg 내가이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 원하는 것을 얻을 : 나는 아약스 문자열
앞의 예를 사용하여 게시 을이 라인에 $corentimg=$array_gr[$i];

왜?

+4

4 개의 항목이 '0'부터 시작하여 최대 색인은 3이지만 'count()'는 4를 반환합니다. – AbraCadaver

+1

$ i

+0

내 아약스 문자열은 N –

답변

2

코드에 조건 오류가있는 경우 <=<으로 바꿉니다. for 루프에서

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

호랑이 펑키 멋진 남자 야! 감사!! –

+0

@TomerTouitou에 오신 것을 환영합니다. 대답을 수락하십시오. :) – Tiger

+0

동의하기 전에 기다려야합니다. –

0

가 우는 소리처럼 $i < count($array_gr)하지 $i <= count($array_gr)해야한다 : 타이거와 Razib의 대답은 완전히 정확하지만

<?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 Al Mamun이 도와 줘서 고맙습니다 !! 호랑이는 이미 내게 대답 –

+0

당신은 환영합니다 @TomerTouitou –

1

, 난 당신이 오류가 발생하는 이유 실제로 설명하는 답을 제출하고 싶어 어쨌든.

먼저 < =을 <으로 변경하면 문제가 해결되지만 그 이유는 무엇입니까?


우리가 어떤 단어를 포함하는 배열을 정의하는 예 여기

같이이 배열을 가지고 :

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

상기 배열은 그 안에 4 "요소"가지고 케이크, 사과, 나무 및 로그입니다.

위해서 var_dump를 통해 배열을 인쇄 (또는 어떤 다른 사람은) 다음과 같은 공개됩니다

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

은 "문제"

수를 사용하여 ($ 배열) 4를 반환합니다, 배열 안에 4 개의 요소가 있기 때문에 올바른데, PHP의 인덱스가 0에서 시작하기 때문에 실제로는 4가 잘못되었습니다.

는 정확한 크기는

당신의 forloop 배열의 각 요소 주위에 루프, 그것은 안타 (3 =) 수 ($ 배열) -1과 같다 : 요소 위치 다섯입니다

$item = $array[4] 

(우리는 0에서 시작으로),이 위치 따라서 당신은 '정의되지 오프셋'오류가 존재하지 않는


수정

코드를 < = (보다 작거나 같음)에서 < (보다 작음)으로 변경하면 forloop가 0에서 4까지 반복되므로이 문제가 해결됩니다 (따라서 설명 된 3 개). 이상은 PHP 용어로 배열의 정확한 크기입니다.)

(또는 count ($ array) -1)을 사용하는 이유는 나중에 이해할 수 있기를 바랍니다. PHP 배열에 필요한 옵션

+0

와우, 배터 설명. 당신을 위해 Upvote. –

+0

귀하의 설명에 대해 필립스 감사합니다! 그것은 내가 다른 사람을 도울 것입니다. <=를 사용하는 것을 눈치 채지 못했지만 당신은 또한 위대한 사람입니다! –