2012-05-19 5 views
1

Il est le tableau suivant:PHP: Transformation de la matrice

arr1 = array(array('xxx',3),array('yyy',2)); 

je dois le transformer en tableau arr2, où le nombre d'occurrence de chaque entrée est égale à la valeur de 2e colonne dans le tableau arr1. Par exemple, pour ce qui précède donné arr1, arr2 devraient être les suivants:

arr2 = array(array('xxx'),array('xxx'),array('xxx'),array('yyy'),array('yyy')); 

j'ai écrit le code suivant, mais ma question est la suivante: Est-il possible de faire la même chose d'une manière plus simple?

for ($i=0; $i<count($arr1); $i++) { 
    for ($j=0; $j<$arr1[i][1]; $j++) { 
    $arr2[] = array($arr1[0]); 
    } 
} 
+3

Un '$' manquant avant 'arr2',' i' et 'j'? – jadkik94

Répondre

3

Je pense que foreach est plus simple et plus facile à lire.

$arr1 = array(array('xxx', 3), array('yyy', 2)); 
$arr2 = array(); 

foreach ($arr1 as $arr) 
{ 
    for ($i = 0; $i < $arr[1]; $i++) 
    { 
     $arr2[] = array($arr[0]); 
    } 
} 
+0

Probablement vous voulez dire $ arr2 [] = array ($ arr [$ i]); –

+0

@KlausosKlausos Je ne pense pas qu'il le fasse - chaque '$ arr' est un tableau avec 2 éléments. '$ arr [0]' est ce que vous voulez répéter. – Gareth

1
foreach ($arr1 as $entry) { 
    $arr2[] = array_fill(0, $entry[1], array($entry[0])); 
} 
$arr2 = call_user_func_array('array_merge', $arr2); 

Je ne l'utiliserais pas bien. C'est beaucoup moins lisible.

Questions connexes