Comment diviser un tableau en deux parties égales en utilisant array_slice () dans PHP? P>
première matrice contient: 0-1200 P>
deuxième tableau contient: 1200-fin p>
6 Réponses :
$array1 = array_slice($input, 0, 1200); $array2 = array_slice($input, 1200);
Cela ne devrait-il pas être 0-1201 et 1201?
@Deceze @webarto je ne pense pas. J'ai mis à jour ma réponse à ce que je pense que cela devrait être. Premièrement, Prendre 1200 enregistrements code>, puis
Démarrer à l'enregistrement 1200 code> qui est vraiment enregistré 1201.
@Rock the op veut "record 0 - 1200" (qui est 1201 enregistrements) et "record 1200 - fin" (qui commencerait à compenser 1201) ... Je pense que l'OP est hors de cette spécification, donc pas de soucis . ;-)
@Deceze, quelque chose comme ça :)
$array1 = array_slice($array, 0, 1199); $array2 = array_slice($array, 1200);
de La documentation de Array_slice , tout ce que vous avez à faire est de donner Dans votre cas: P> En d'autres termes, ce code indique Etant donné que l'index 1200 est l'élément 1201, cela devrait être ce dont vous avez besoin. p> p> array_slice code > Un décalage et une longueur.
array_slice code>: p>
$quantity = count($original_collection); $collection1 = array_slice($original_collection, 0, intval($quantity / 2), true); $collection2 = array_diff_key($original_collection, $collection1);
Je sais qu'il a spécifié les chiffres, mais cette option est meilleure, car elle divise réellement n'importe quelle gamme en 2, pas seulement le 2400 du propriétaire de la question. Cela répond au titre de cette question.
Alors, quel est l'avantage d'utiliser les deux array_slice code> et
array_diff_key code> au lieu d'utiliser simplement
array_splice code> une fois?
Je pense array_chunk code>
serait Plus facile, d'autant plus que vous n'avez pas besoin de savoir combien d'éléments sont dans le tableau.
Vous avez la bonne idée, mais cela traitait la matrice dans de nombreux tableaux de longueur 2, pas diviser la matrice en deux. Au lieu de cela, changez la taille $ à la moitié de la longueur de la matrice (à l'aide de plancher (nombre ($ entrée) / 2) code>) de sorte que le résultat serait deux tableaux contenant la moitié des enregistrements.
C'est une bonne idée, mais ne fonctionnera pas au cas où la taille de la matrice sera même numérotée. Il va calculer la matrice en 3 parties: les deux premiers matrices seront une taille égale et le dernier serrera avec un seul élément.
Que diriez-vous:
$array1; // your original array with all records $array2 = array_splice($array1, ceil(count($array1)/2)); // or per your requirement of 1200 in the first array: $array2 = array_splice($array1, 1200);