8
votes

Changer la clé de matrice en une valeur de Sub Tabley

Ceci est l'ensemble du résultat de ma base de données xxx

Comment puis-je modifier le plan $ [0] à $ planifier [valeur_of_id] < / code>

merci.


1 commentaires

Selon la façon dont vous interrogez vos résultats, vous pouvez modifier la matrice là-bas, mais nous devrions voir votre code.


7 Réponses :


0
votes
$plans = array();
foreach($plan as $item)
{
    $plans[$item['id']] = $item;
}
$plans contains the associative array.This is just a simple solution.

0 commentaires

7
votes

Cela ne le fera pas en place, mais:

$new_plan = array();
foreach ($plan as $item)
{
  $new_plan[$item['id']] = $item;
}


0 commentaires

2
votes

Voir le code que vous avez utilisé pour assembler $ Plan serait utile, mais je vais supposer que c'était quelque chose comme ça xxx

Vous pouvez simplement affecter une valeur explicite tout en tirant des données Votre base de données, comme ceci: xxx

Ceci assume $ res est le résultat défini à partir de votre requête de base de données.


0 commentaires

0
votes
$newplan = array();
foreach($plan as $value) {
    $id = $value["id"];
    unset($value["id"]);
    $newplan[$id] = $value;
}

1 commentaires

Cette réponse manque à son explication éducative.



3
votes

Vous pouvez également utiliser array_reduce code> généralement utilisé pour, bien, réduisant un tableau. Qui a déclaré qu'il peut être utilisé pour obtenir un format de tableau comme vous le souhaitez par simple renvoi des mêmes éléments que dans la matrice d'entrée mais avec les touches requises.

// Note: Uses anonymous function syntax only available as of PHP 5.3.0
//       Could use create_function() or callback to a named function
$plan = array_reduce($plan, function($reduced, $current) {
    $reduced[$current['id']] = $current;
    return $reduced;
});


0 commentaires

4
votes

Cela peut être un peu en retard mais je cherche une solution au même problème. Mais puisque toutes les autres réponses impliquent des boucles et sont trop compliquées IMHO, j'essaie moi-même des trucs moi-même.

Le résultat xxx

C'est aussi simple que cela.


1 commentaires

Ou, simplement array_column ($ éléments, null, "id");



2
votes

À mon avis, il n'y a pas de technique plus simple ou plus expressif que array_column () avec un null second paramètre. Le paramètre null informe la fonction pour conserver tous les éléments de chaque sous-réseau, les nouvelles touches de niveau 1ère sont dérivées de la colonne nommée dans le troisième paramètre de array_column () .

Code: ( démo ) xxx

note: ceci La technique est également couramment utilisée pour garantir que tous les compartiments contiennent une valeur unique au sein de la matrice mère. Cela se produit car les matrices peuvent ne pas contenir des touches en double sur le même niveau. Par conséquent, si une valeur en double survient lors de l'utilisation de array_column () , les compartiments précédents seront remplacés par chaque occurrence ultérieure de la même valeur à utiliser comme nouvelle clé.

< Un href = "https://3v4l.org/5sbjk" rel = "NOFOOLS NOREFERRER"> démonstration de "perte de données" en raison de la nouvelle collision clé.


0 commentaires