Page 1 sur 1

Récupérer les clefs de chaque lignes d'un tableau

Posté : 28 juin 2016, 12:07
par Weezy
Bonjour,
Voila mon problème:

J'ai créé une fonction qui a pour but d'extraire une portion de tableau. Le souci c'est que ma fonction ne récupère pas les clefs de chaque lignes.

Voici mon code:
function reduc($min, $max, $array){

  foreach ($array as $lines) {
          $nbLigne=count($lines);
  }

  $start=round($min*$nbLigne/100); //début du nouvau tableau
  $length=round(((($max-$min)/100)*$nbLigne)); //longeur du nouveau tableau


  foreach ($array as $column => $line) {
      $NewArray[]=array_slice($line, $start,$length);
  }

return $NewArray;

}
Mon $array de départ:
Array ( 
[nom] => Array ( [0] => Aziz [1] => Eric [2] => Adel [3] => Brayan [4] => Rayan [5] => Nicolas [6] => Kevin [7] =>Leo                    [8] =>Julien [9] => Julie [10] => Sam [11] => Téo [12] => Ali [13] => Ramzy [14] => Rudy [15] => Alex ) 

[a] => Array ( [0] => 1 [1] => 7 [2] => 2 [3] => 6 [4] => 2 [5] => 6 [6] => 3 [7] => 7 [8] => 2 [9] => 8 [10] => 4 [11] => 9 [12] => 7 [13] => 2 [14] => 4 [15] => 9 ) 

[b] => Array ( [0] => 0 [1] => 4 [2] => 3 [3] => 5 [4] => 3 [5] => 1 [6] => 2 [7] => 4 [8] => 3 [9] => 7 [10] => 3 [11] => 4 [12] => 2 [13] => 4 [14] => 4 [15] => 2 )

[c] => Array ( [0] => 3 [1] => 5 [2] => 9 [3] => 7 [4] => 6 [5] => 4 [6] => 8 [7] => 4 [8] => 8 [9] => 6 [10] => 9 [11] => 7 [12] => 3 [13] => 5 [14] => 7 [15] => 6 ) 

[d] => Array ( [0] => 2 [1] => 7 [2] => 5 [3] => 8 [4] => 1 [5] => 6 [6] => 6 [7] => 8 [8] => 2 [9] => 8 [10] => 6 [11] => 7 [12] => 4 [13] => 6 [14] => 5 [15] => 9 ) 
)
Avec $min=20 et $max=50:
reduc($min, $max, $array);
J’obtiens:
Array (
[0] => Array ( [0] => Brayan [1] => Rayan [2] => Nicolas [3] => Kevin [4] => Leo ) 
[1] => Array ( [0] => 6 [1] => 2 [2] => 6 [3] => 3 [4] => 7 ) 
[2] => Array ( [0] => 5 [1] => 3 [2] => 1 [3] => 2 [4] => 4 ) 
[3] => Array ( [0] => 7 [1] => 6 [2] => 4 [3] => 8 [4] => 4 )
[4] => Array ( [0] => 8 [1] => 1 [2] => 6 [3] => 6 [4] => 8 ) 
)
Ce que je veux obtenir:
Array (
[nom] => Array ( [0] => Brayan [1] => Rayan [2] => Nicolas [3] => Kevin [4] => Leo ) 
[a] => Array ( [0] => 6 [1] => 2 [2] => 6 [3] => 3 [4] => 7 ) 
[b] => Array ( [0] => 5 [1] => 3 [2] => 1 [3] => 2 [4] => 4 ) 
[c] => Array ( [0] => 7 [1] => 6 [2] => 4 [3] => 8 [4] => 4 )
[d] => Array ( [0] => 8 [1] => 1 [2] => 6 [3] => 6 [4] => 8 ) 
)
Merci d'avance pour votre aide :)

Re: Récupérer les clefs de chaque lignes d'un tableau

Posté : 28 juin 2016, 12:48
par moogli
salut,

tu n'aurais tenté de recoder la fonction array_slice ? :mrgreen:

sinon je pense que ce qu'il te manque $NewArray[$column]= xxx ?

par contre sur ton code j'ai comme un doute

foreach ($array as $lines) {
$nbLigne=count($lines);
}

c'est trop lignes la c'est l'équivalent de $nbLigne = count($array[count($array-1)]; en pas forcément plus efficace ($nbLigne va toujours valoir le nombre d'élément du dernier index du tableau !).

@+

Re: Récupérer les clefs de chaque lignes d'un tableau

Posté : 28 juin 2016, 13:00
par Weezy
Ok merci pour ta réponse.

Je devais réduire un tableau multidimensionnel en prenant en compte deux valeurs en pourcentage...

Pour ce qui est de :
foreach ($array as $lines) {
$nbLigne=count($lines);
}
Il me fallait le nombre de ligne de mon tableau et count ($array) me renvoyais un drôle de résultats.

Donc tu pence que je dois insérer $NewArray[$column] dans ma boucle??

Re: Récupérer les clefs de chaque lignes d'un tableau

Posté : 28 juin 2016, 13:05
par Weezy
Merci pour ton aide :) cela fonctionne.

Re: [RESOLU] Récupérer les clefs de chaque lignes d'un tableau

Posté : 29 juin 2016, 12:35
par moogli
de rien