2009-10-29 6 views
1

J'ai un tableau indexé que j'ai généré à partir d'un tableau associatif avec ce codetableau boucle comportement étrange en php

$index_arr = array(); 
foreach($assoc_arr as $key => $val){ 
    $index_arr .= $val; 
} 

quand je l'imprimer avec print_r($index_arr); il fonctionne très bien. Mais lorsque je tente d'imprimer avec foreach je reçois une erreur « Invalid argument supplied for foreach() »

foreach($index_arr as $one){ 
    echo "one: $one<br />"; 
} 

Je suis sûr que ce soit la bonne syntaxe ou suis-je trop fatigué à ce moment de la journée?

+1

+1 pour contrer le downvote, puisque la question était claire et la downvote n'a pas été expliquée. – Heinzi

Répondre

5

Vous tournez le tableau dans une chaîne en utilisant = opérateur sur elle . Vous souhaitez utiliser:

$index_arr[] = $val; 

Ajouter à la fin.

également dans ce cas particulier, vous pouvez juste faire:

$index_arr = array_values($assoc_arr); 

Ce fait exactement ce que votre boucle fait.

2

a besoin d'être ceci:.

$index_arr = array(); 
foreach($assoc_arr as $key => $val){ 
    $index_arr[] = $val; 
} 

également

foreach($index_arr as $key=>$data){ 
    echo "Key: ".$key." Data: ".$data."<br />"; 
} 
+2

Ou simplement utiliser '$ index_arr = array_values ​​($ assoc_arr);' :) –

+0

Merci @Lukas juste pensé à cela et était sur le chemin du retour à modifier, à votre santé –

1
$index_arr .= $val; 

devrait être

$index_arr[] = $val; 
2

Lorsque vous avez fait $index_arr .= $val; PHP a fait une opération de chaîne. Vous devez faire $index_arr[]=$val;