2014-07-19 3 views
0

un noob php ici. Je viens de commencer il y a un mois. J'utilise actuellement un foreach key=> value pour parcourir deux tableaux simultanément. Cependant, après un débogage, j'ai trouvé que dans mon code, la touche saute le numéro 1? Par exemple, la valeur de la clé passe à [0 2 3 4 ...]. Voici mon code:tableaux php, clé foreach saute une valeur

<?php 
foreach($_POST['array'] as $key=>$value) 
{ 

echo $key; 

//set up mysql connection 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
//select database 
mysql_select_db("database") or die(mysql_error()); 

$value= mysql_real_escape_string($value); 
$query = "SELECT Hours 
FROM Table 
WHERE Activity = '$value';"; 

$result = mysql_query($query) or die(mysql_error()); 

$row = mysql_fetch_array($result); 

    echo $row['Hours']; 
    echo '<br>'; 


    } 
?> 

La chose étrange est que je l'ai appelé le même script plus tôt, mais sur un tableau différent et la valeur de clé ne saute pas, donc cela me déconcertant. Toute aide est appréciée!

EDIT: Voici le contenu de mon tableau tel que demandé.

//key array 
array(2) { [0]=> string(3) "abc" [2]=> string(4) "abcd" } 
//value array 
array(2) { [0]=> string(1) "2" [1]=> string(1) "8" } 

Je vois le problème ici, car les itérations de clé et de valeur ne correspondent pas. J'utilise actuellement une fonction jQuery clone pour cloner dynamiquement les tableaux, cela pourrait-il être le problème?

MISE À JOUR: OK J'ai résolu ce problème, il était dû au script de clonage jQuery que j'utilisais. J'avais adapté un script existant pour mon propre travail, et j'ai manqué quelques numéros d'identification cruciaux là-dedans. Merci pour les gars de var_dump, ça m'a mis sur le bon chemin.

+3

Ajoutez ceci avant votre 'foreach':' var_dump ($ _ POST ['tableau']); 'et assurez-vous que le contenu du tableau est ce que vous attendez. – dave

+0

Pouvez-vous poster le contenu de 'var_dump ($ _ POST ['tableau'])'? –

+0

que voulez-vous dire par saut? n'obtenez-vous pas le résultat? essayer de 'echo $ query;' et vérifier –

Répondre

0

Pouvez-vous essayer:

function FixArrayKeys(&$array) { 
    $max = key(end($array)); 
    for($i = 0; $i < $max; $i++) { 
     if(!isset($array[$i])) { 
      $array[$i] = ''; 
     } 
    } 
} 

FixArrayKeys($_POST['array']); 

Il devrait faire l'affaire!

Cette fonction doit être appelée avant d'exécuter foreach. Êtes-vous sûr que la clé est dans le tableau de poste?

Questions connexes