2011-08-07 5 views
3

Je veux pousser certains éléments dans un tableau, voici la structure:php mettre les tableaux dans des tableaux

$str = 'String'; 
$a = array('some', 'sub', 'page'); 

et je veux pousser les articles à un autre tableau qui devrait devenir:

Array (
    [some] => Array (
     [sub] => Array (
     [page] => String 
    ) 
    ) 
) 

Je ne sais pas exactement comment l'expliquer, alors espérons que l'exemple vous montre quelque chose. Je veux que tout nouvel élément du premier tableau (a) soit poussé en tant que sous-tableau de l'un prédécesseur et que le dernier ait la valeur de $ str;

$string = 'My Value'; 
$my_first_array = array('my', 'sub', 'arrays'); 

Ensuite, une fonction pour analyser my_first_array $ et le transfert comme:

Exemple:

ob_start('nl2br'); 
$my_parsed_sub_array = parse_sub_arrays($my_first_array, $string); 
print_r($my_parsed_sub_array); 

=== >>>

Array (
    [my] => Array (
     [sub] => Array (
     [arrays] => String 
    ) 
    ) 
) 

Répondre

5

[Modifier] I J'espère que, cette fois, j'ai compris la question ...

Si vous avez votre chaîne et tableau comme ceci:

$str = 'test'; 
$a = array('some', 'sub', 'page'); 

Vous pouvez d'abord initialiser le tableau résultant de cette façon, traiter ce cas particulier du dernier élément:

$arr = array($a[count($a)-1] => $str); 

Ensuite, vous pouvez faire une boucle sur chaque élément de votre tableau $a, à partir de la fin (et ne pas travailler sur le dernier élément, que nous avons déjà traité):

for ($i=count($a) - 2 ; $i>=0 ; $i--) { 
    $arr = array($a[$i] => $arr); 
} 

Avec cela, le dumping le tableau résultant:

var_dump($arr); 

Si vous obtenez le résultat attendu:

array 
    'some' => 
    array 
     'sub' => 
     array 
      'page' => string 'test' (length=4) 



Vieille réponse ci-dessous, avant de comprendre la question :

Vous pouvez déclarer votre tableau de cette façon:

$arr = array(
    'some' => array(
     'sub' => array(
      'page' => $str, 
     ), 
    ), 
); 


Ou, en utilisant plusieurs étapes distinctes (peut-être plus facile, selon la façon dont vous construisez vos sous-réseaux, en particulier dans un cas plus complexe que l'exemple actuel):

$sub2 = array('page' => $str); 
$sub1 = array('sub' => $sub2); 
$arr = array('some' => $sub1); 
+0

non, non vous ne recevez pas le point.I veulent faire un algorithme pour analyser le premier réseau (a) à des sous-réseaux et le dernier d'un $ pour avoir la valeur $ str.Je veux faire cette auto Matically via le code, pas manuellement. Il est compliqué, désolé je ne peux pas le dire mieux. –

+0

Je vais essayer de mieux l'expliquer dans le premier post, ce n'est pas ça. –

+0

Oh; désolé, n'a pas tout à fait comprendre la question :-( –