J'ai un tableau multidimensionnel avec 3 clés ("longueur", "largeur" et "hauteur). Chaque clé est associée à un tableau de valeurs:
$data = [
"length" => ["12", "44"],
"width" => ["22", "45"],
"height" => ["22", "34"]
];
Comment puis-je transposer les colonnes de chaque clé en lignes de 3 colonnes comme suit:
$rows = [
["length" => "12", "width" => "22", "height" => "22"],
["length" => "44", "width" => "45", "height" => "34"]
];
3 réponses
La fonction suivante fera le travail:
function transpose($data)
{
$result = [];
$keys = array_keys($data);
for ($row = 0, $rows = count(reset($data)); $row < $rows; $row++) {
foreach ($keys as $key) {
$result[$row][$key] = $data[$key][$row];
}
}
return $result;
}
Notez que la fonction est une solution générale elle ne dépend pas du nom des touches ni du nombre d'entrées de chaque touche.
Voulez-vous les enregistrer dans une base de données différente ou dans la même base de données? si vous enregistrez dans la même base de données? La structure du tableau changera-t-elle car elle est dynamique, comme dans un certain temps vous aurez
"lenght" => array:2 [▼
0 => "12"
1 => "44"
]
"width" => array:2 [▼
0 => "22"
1 => "45"
]
"height" => array:2 [▼
0 => "22"
1 => "34"
]
Et une autre fois vous aurez
"width" => array:2 [▼
0 => "12"
1 => "44"
]
"length" => array:2 [▼
0 => "22"
1 => "45"
]
"something different" => array:2 [▼
0 => "22"
1 => "34"
]
Vous pouvez essayer celui-ci pour obtenir les tableaux comme vous l'avez dit
$height = array(12,44);
$width = array(20,50);
$length = array(30,50);
$new_array[0] = $height[0];
$new_array[1] = $width[0];
$new_array[2] = $length[0];
$new_array2 = $new_array[1];
print_r($new_array);
echo "<br>";
print_r($new_array2);
Questions connexes
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.