2016-11-15 2 views
0

Quel est le problème avec mon code funky? publier avec ajax une chaîne
avant ex: 309534368.gif,400559388.jpg,859954067.jpg,821646469.jpg Dans mon scrip php je vous écris ceexplode() donne-moi Offset non défini dans 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]; 
...... 

et quand je lance mon code, je reçois ce que je veux + Notice Undefined offset: sur cette ligne $corentimg=$array_gr[$i];

Pourquoi?

+4

4 éléments à partir de '0' l'index max est' 3' mais 'count()' renvoie 4. – AbraCadaver

+1

'$ i

+0

Ma chaîne ajax pourrait être N longue –

Répondre

2

Il y a une erreur de condition avec votre code Remplacez <= par <.

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

Tiger vous êtes un grand homme funky! Merci!! –

+0

Bienvenue @TomerTouitou, Veuillez accepter la réponse. :) – Tiger

+0

Je neet à attendre avant d'accepter –

0

dans la boucle for devrait être $i < count($array_gr) pas $i <= count($array_gr) comme ci-dessous:

<?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 merci pour votre aide !! Le tigre me répond déjà –

+0

Vous êtes les bienvenus @TomerTouitou –

1

Alors que la réponse de Tiger et Razib est tout à fait correct, je voulais présenter une réponse qui explique en fait pourquoi vous obtenez l'erreur de toute façon.

Premièrement, changer votre < = en < résout le problème, mais pourquoi?


Prenez ce tableau comme un exemple

Ici, nous définissons un tableau qui contient quelques mots:

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

Le tableau ci-dessus a 4 « éléments » à l'intérieur de celui-ci: gâteau, pomme, arbre et bûche.

Impression du tableau via un var_dump (ou tout autre) révélera les éléments suivants:

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

Le "problème"

comptage aide (tableau de $) retournera 4, ce qui est correct car il y a 4 éléments dans le tableau, cependant parce que les index de PHP commencent à zéro, 4 est réellement faux.

La taille correcte serait count ($ array) -1 (= 3)

Comme votre forloop boucles autour de chaque élément du tableau, il frappe:

$item = $array[4] 

Quelle est la position de cinq éléments (comme on commence à zéro), cette position n'existe pas, donc vous obtenez le 'Undefined offset' erreur


le FixLe correctif donné pour changer votre code de < = (Inférieur ou égal à) à < (Plus petit que) résout le problème, car le forloop boucle de zéro à moins de 4 (donc 3, ce qui explique ci-dessus est la taille correcte du tableau dans le terme PHP)

J'espère que cela vous aide à comprendre, et toute autre personne qui trouve ce post sur Google plus tard pourquoi utiliser < (ou à la place de simplement compter ($ array) -1) est le option nécessaire pour les tableaux PHP

+0

wow, pâte expliquer. Upvote pour vous. –

+0

Mark Phillips merci pour votre explication! ça aiderait les autres je n'ai tout simplement pas remarqué que j'utilise <= mais vous êtes aussi un grand homme! –