2011-10-17 5 views
0

J'ai un tableau multidimensionnel et ce que je veux est dans chaque deuxième degré de valeurs de tableau, la limite doit être fixée à 4 seulement. Comme je l'ai un tableau de type:redimensionnement de multidimensionnel tableau en php

Array 
(
[test2] => Array 
    (
     [0] => Array 
      (
       [application_id] => 405275016 
      ) 
     [1] => Array 
      (
       [application_id] => 405275016 
      ) 

     [2] => Array 
      (
       [application_id] => 303198288 
      ) 

     [3] => Array 
      (
       [application_id] => 303841592 
      ) 

    ) 

[test3] => Array 
    (
     [0] => Array 
      (
       [application_id] => 289267216 
      ) 

     [1] => Array 
      (
       [application_id] => 303198216 
      ) 

     [2] => Array 
      (
       [application_id] => 405275016 
      ) 

     [3] => Array 
      (
       [application_id] => 303198288 
      ) 

     [4] => Array 
      (
       [application_id] => 303841592 
      ) 

     [5] => Array 
      (
       [application_id] => 311430400 
      ) 

     [6] => Array 
      (
       [application_id] => 318096216 
      ) 

     [7] => Array 
      (
       [application_id] => 320256352 
      ) 
    ) 

) 

et ce que je veux que si la valeur des tableaux intérieure dépasse 5 le nombre ne devrait pas ajouter d'autres valeurs à elle. je dois formater ce tableau ci-dessus à quelque chose comme:

Array 
(
[test2] => Array 
    (
     [0] => Array 
      (
       [application_id] => 405275016 
      ) 
     [1] => Array 
      (
       [application_id] => 405275016 
      ) 

     [2] => Array 
      (
       [application_id] => 303198288 
      ) 

     [3] => Array 
      (
       [application_id] => 303841592 
      ) 

    ) 

[test3] => Array 
    (
     [0] => Array 
      (
       [application_id] => 289267216 
      ) 

     [1] => Array 
      (
       [application_id] => 303198216 
      ) 

     [2] => Array 
      (
       [application_id] => 405275016 
      ) 

     [3] => Array 
      (
       [application_id] => 303198288 
      ) 

     [4] => Array 
      (
       [application_id] => 303841592 
      ) 
    ) 

) 

ici dans la deuxième rangée de tableau 3 derniers tableaux ont été tronqués afin de ne prendre que 5 compte comme une valeur. J'ai essayé beaucoup de méthodes mais aucune n'a atteint ceci.

Toute idée sur comment puis-je y parvenir sera très appréciée ??

Répondre

1
foreach ($array as $k => $v) { // Loop outer array 
    for ($i = 5; isset($array[$k][$i]); $i++) { // Loop inner array, starting at element #5 
    unset($array[$k][$i]); // unset all elements >=5 
    } 
} 
2
$array = array_map(function ($arr) { return array_slice($arr, 0, 5); }, $array); 

Notez que cette syntaxe utilise PHP 5.3+.

Si vous voulez vraiment un tableau (ou quelque chose comme ça) que ne peut détenir plus de 5 éléments, vous aurez besoin de mettre en œuvre une classe personnalisée (éventuellement en étendant ArrayObject) et/ou jouer avec SplFixedArray.

2

ou vous pouvez utiliser la fonction array_slice comme ceci:

foreach ($array as $key=>$value) 
{ 
    $array[$key] = array_slice($value, 0, 5); 
} 
1

PHP n'a pas de fonctionnalité prêt pour ce comportement, vous devrez faire votre propre fonction pour ajouter des valeurs au tableau pour y parvenir. Ex:

function array_add_value($array, $value) { 
    if(count($array) < 5) { 
     $array[] = $value; 
    } 
} 

Si vous souhaitez manipuler un tableau existant qui a déjà trop d'éléments, vous devrez faire une fonction similaire pour ce Ex:

function fix_array($array) { 
    if(count($array) > 5) { 
     for($i=4;$i<count($array);$i++) { 
      unset($array[$i]); 
     } 
    } 
}