2012-10-23 4 views
0

Permettez-moi de commencer en disant que je suis assez nouveau pour php. J'essaye de créer un tableau multidimensionnel mais en courant dans un résultat bizarre quand je regarde le résultat. J'ai le sentiment que la syntaxe que j'utilise n'est pas correcte mais que je ne peux la vérifier nulle part en ligne. Donc, je pose la question ici.PhP Multidimensional Array concerant les index ensemble

Voici l'essentiel de ce que je suis en train de faire:

// Given: $row["foo"] == "Hello" && $row["bar"] == 1 

while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){ 
    $multiArray[$i] = $row["foo"]; 
    $multiArray[$i]["lorem"] = $row["bar"]; 
    $i++; 
} 

Quand je vais à imprimer $multiArray[$i] je reçois: 1ello. Comme je l'ai dit, je crois que l'erreur réside dans ma syntaxe de comment j'affecte ce tableau multidimensionnel. Quelqu'un peut-il m'aider s'il vous plaît à trouver une méthode similaire à (ce que je ne peux que deviner) php folie ci-dessus?

Merci d'avance!

Répondre

2

Vous ne pouvez pas combiner les types de données dans une même valeur de tableau.

$multiArray[$i] seulement peut avoir un type de valeur, (chaîne, entier ou tableau), mais dans votre code, vous voulez un tableau et une chaîne en même temps!

Une solution possible est (mais dépend de votre logique):

while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){ 
    $multiArray[$i]["lorem_string"] = $row["foo"]; 
    $multiArray[$i]["lorem"] = $row["bar"]; 
    $i++; 
} 
+0

+1 avec l'édition. –

+1

Oui, ça le fixe! Merci beaucoup! – jpalladino84

0

Parce que d'abord vous attribuez $multiArray[$i] = $row["foo"]; si $multiArray[$i] sera une chaîne avec une valeur d'exemple Hello, vous assigneront index lorem de la chaîne avec $multiArray[$i]["lorem"] = $row["bar"];. lorem evaulates à 0, de sorte que la sortie ve 1ello

Modifier: une nouvelle version de PHP devrait produire aussi un avertissement.

0

Vous devez d'abord affecter $ multiArray [$ i] à une chaîne "hello", puis essayer de lui affecter un tableau sur la ligne suivante.

Au lieu de cela vous avez besoin de la première mission d'être à un tableau, qui peut alors contenir des chaînes ou ints ou plusieurs tableaux ou tout

En outre, en faisant explicitement les choses dans ce cas également vous aider à comprendre ce qui se passe.

Par exemple:

$i = 0; // explicit initialization of $i 
while($row = mysqli_fetch_array($query_result, MYSQLI_ASSOC)){ 
    $multiArray[$i] = array(); // explicit initialization of array 
    $multiArray[$i]["foo"] = $row["foo"]; 
    $multiArray[$i]["lorem"] = $row["bar"]; 
    $i++; 
} 

Alors si vous voulez "bonjour" echo $multiArray[$i]["foo"]; et si vous voulez 1 echo $multiArray[$i]["lorem"];.