Bonjour,
Voila je rencontre un petit problème avec mon code.
J'ai un tableau resemblant à ceci:
$a = [
0 => ['type' => 'type1'],
1 => ['option' => 'option1'],
2 => ['type' => 'type2'],
3 => ['option' => 'option2'],
4 => ['type' => 'type3'],
5 => ['option' => 'option3'],
6 => ['type' => 'type4'],
7 => ['option' => 'option4'],
8 => ['type' => 'type5'],
9 => ['option' => 'option5'],
];
J'aimerais le mettre sous cette forme La seule contrainte c'est que cela doit etre compatible PHP 5.4 (je sais c'est obselète mais pas le choix)
$b = [
0 => [
0 => [
'type' => 'type1',
'option' => 'option1'
],
1 => [
'type' => 'type2',
'option' => 'option2'
],
],
1 => [
0 => [
'type' => 'type3',
'option' => 'option3'
],
1 => [
'type' => 'type3',
'option' => 'option3'
],
],
2 => [
0 => [
'type' => 'type4',
'option' => 'option4'
],
1 => [
'type' => 'type4',
'option' => 'option4'
],
],
];
** OU par block de 3 ou 4 ou 5 (parametre dynamique):
<?php
$b = [
0 => [
0 => [
'type' => 'type1',
'option' => 'option1'
],
1 => [
'type' => 'type2',
'option' => 'option2'
],
2 => [
'type' => 'type3',
'option' => 'option3'
],
],
1 => [
0 => [
'type' => 'type3',
'option' => 'option3'
],
1 => [
'type' => 'type4',
'option' => 'option4'
],
2 => [
'type' => 'type4',
'option' => 'option4'
],
],
2 => [
0 => [
'type' => 'type5',
'option' => 'option5'
],
],
];
J'ai tenté toutes les possibilités que je puisse connaitre, ainsi que des recherches sur le web (sans doute mal si quelqu'un trouve), mais impossible de le faire sortir selon mon attente.
Si quelqu'un a une solution je suis tout ouïe.
Merci d'avance.
Bon, je me réponds tout seul 30mins après avoir posté mon probléme ....
Lamentable sachant que ca fait depuis 16h que je suis sur ce soucis...
EN faisant ainsi tout fonctionne à ma convenance, et en full dynamique (le principal pour moi):
<?php
$elem_by_bloc = 2;
$a = [
0 => ['type' => 'type1'],
1 => ['option' => 'option1'],
3 => ['toto' => 'toto1'],
4 => ['type' => 'type2'],
5 => ['option' => 'option2'],
6 => ['toto' => 'toto2'],
7 => ['type' => 'type3'],
8 => ['option' => 'option3'],
9 => ['toto' => 'toto3'],
];
// Récupère la liste des clés
foreach($a as $c)
{
$tab[] = array_keys($c);
}
// compte le nombre de clé distinct
$count = count(array_unique(array_reduce($tab, 'array_merge', [])));
// Créer un tableau découpé par le compteur
$newA = array_chunk($a, $count);
$newB = [];
// Réduit et merge le tableau
foreach($newA as $line)
{
$newB[] = array_reduce($line, 'array_merge', []);
}
print_r(array_chunk($newB, $elem_by_bloc));
J'obtiens bien le résultat voulu.
Avec 2 par bloc:
Array
(
[0] => Array
(
[0] => Array
(
[type] => type1
[option] => option1
[toto] => toto1
)
[1] => Array
(
[type] => type2
[option] => option2
[toto] => toto2
)
)
[1] => Array
(
[0] => Array
(
[type] => type3
[option] => option3
[toto] => toto3
)
)
)
Et la avec 3:
Array
(
[0] => Array
(
[0] => Array
(
[type] => type1
[option] => option1
[toto] => toto1
)
[1] => Array
(
[type] => type2
[option] => option2
[toto] => toto2
)
[2] => Array
(
[type] => type3
[option] => option3
[toto] => toto3
)
)
)