J'ai un tableau multidimensionnel et j'essaie de savoir comment "écho" simplement les éléments du tableau. La profondeur de la matrice n'est pas connue, elle pourrait donc être profondément imbriquée.
Dans le cas du tableau ci-dessous, l'ordre correct d'écho serait le suivant:
This is a parent comment
This is a child comment
This is the 2nd child comment
This is another parent comment
Voici le tableau dont je parlais:
Array
(
[0] => Array
(
[comment_id] => 1
[comment_content] => This is a parent comment
[child] => Array
(
[0] => Array
(
[comment_id] => 3
[comment_content] => This is a child comment
[child] => Array
(
[0] => Array
(
[comment_id] => 4
[comment_content] => This is the 2nd child comment
[child] => Array
(
)
)
)
)
)
)
[1] => Array
(
[comment_id] => 2
[comment_content] => This is another parent comment
[child] => Array
(
)
)
)
On dirait que vous essayez seulement d'écrire une valeur importante de chaque tableau. Essayez une fonction récursive comme ceci:
function RecursiveWrite($array) {
foreach ($array as $vals) {
echo $vals['comment_content'] . "\n";
RecursiveWrite($vals['child']);
}
}
Vous pouvez également le rendre un peu plus dynamique et faire passer les chaînes 'comment_content'
et 'child'
dans la fonction en tant que paramètres (et continuer à les transmettre dans l'appel récursif).
<pre>
<?php print_r ($array); ?>
</pre>
Solution appropriée, meilleure et propre:
function traverseArray($array)
{
// Loops through each element. If element again is array, function is recalled. If not, result is echoed.
foreach ($array as $key => $value)
{
if (is_array($value))
{
Self::traverseArray($value); // Or
// traverseArray($value);
}
else
{
echo $key . " = " . $value . "<br />\n";
}
}
}
Vous appelez simplement dans cette fonction d'assistance traverseArray($array)
dans votre classe actuelle/principale comme ceci:
$this->traverseArray($dataArray); // Or
// traverseArray($dataArray);
source: http://snipplr.com/view/10200/array-traverse-a-multidimensional-array/
si vous voulez le stocker en tant que variable, vous pouvez le faire:
recurse_array($values){
$content = '';
if( is_array($values) ){
foreach($values as $key => $value){
if( is_array($value) ){
$content.="$key<br />".recurse_array($value);
}else{
$content.="$key = $value<br />";
}
}
}
return $content;
}
$array_text = recurse_array($array);
Évidemment, vous pouvez formater au besoin!
print_r($arr)
donne généralement un résultat assez lisible.
La récursivité serait généralement votre réponse, mais une autre solution consisterait à utiliser des références. Voir http://www.ideashower.com/our_solutions/create-a-parent-child-array-structure-in-one-pass/
Si vous exportez les données à des fins de débogage et de développement, Krumo est idéal pour produire une sortie facilement lisible. Découvrez le exemple de sortie .
Il y a plusieurs façons de le faire
1) - print_r($array);
ou si vous voulez un tableau bien formaté, alors
echo '<pre>'; print_r($array); echo '<pre/>';
// ---------------------------------------------------- -
2) - utilisez var_dump($array)
pour obtenir plus d’informations sur le contenu du tableau, comme type de données et longueur . // ---------------------- ---------------------------
3) - vous pouvez boucler le tableau en utilisant foreach();
de php et obtenir la sortie désirée.
function recursiveFunction($array) {
foreach ($array as $val) {
echo $val['comment_content'] . "\n";
recursiveFunction($vals['child']);
}
}
Essayez d'utiliser var_dump function.