2009-07-04 6 views
2

J'ai un tableau multidimensionnel qui ressemble à ceci:Modification d'un imbriquée tableau (multidimentionnelle) en paires clé => valeur en PHP

 
Array 
(
    [0] => Array 
     (
      [ClientID] => ec2173de2134fdsfg4fsdffcb4b5205 
      [Name] => ABC Widgets 
     ) 

    [1] => Array 
     (
      [ClientID] => e5dfgfdg2d760f640aadfgdfgdfg47b 
      [Name] => Acme Co 
     ) 

    [2] => Array 
     (
      [ClientID] => b9dfgsdfg419085c3sdgffdsgfdg313 
      [Name] => 4321 Corp 
     ) 

) 

Je voudrais changer à ce qui suit:

 
Array 
(
    ec2173de2134fdsfg4fsdffcb4b5205 => ABC Widgets 
    e5dfgfdg2d760f640aadfgdfgdfg47b => Acme Co 
    b9dfgsdfg419085c3sdgffdsgfdg313 => 4321 Corp 
) 

Quelle est la meilleure façon de le faire? Aussi, serais-je mieux de stocker le tableau dans son format original et de convertir vers d'autres formats si nécessaire? Merci pour toute assistance

Répondre

5
$flat = array(); 
foreach($multidim as $item) 
    $flat[$item['ClientID']] = $item['Name']; 

Si vous préférez stocker le formulaire d'origine, il est généralement impossible de répondre à cette question. Vous devriez le stocker si vous en avez besoin.

+0

Merci pour la réponse claire et concise. – rickvug

0

Il semble que vous créez une table de hachage avec les données d'origine. Les tables de hachage sont très rapides pour accéder et insérer des éléments de données uniques. Toutefois, vous ne pouvez pas exécuter de requêtes sur les données contenues dans les enregistrements. Vous pouvez uniquement les récupérer en fonction de la clé unique ou de l'insertion basée sur une clé générée.

Vous pouvez utiliser le format d'origine avec tous ses champs comme «back-end» et générer une table de hachage comme celle que vous avez démontrée. L'inconvénient est que chaque fois que cette table est générée, cela coûte des cycles CPU. Si vous placez ces données dans une base de données, le moteur de base de données gérera la création de tables de données régulières (comme la première) et de tables de hachage (comme la seconde) nécessaires à la requête que vous utilisez. Vous pouvez également l'obliger à créer des tables de hachage basées sur une colonne de base de données donnée.

+0

Le cas d'utilisation est que je travaille avec l'API Campaign Monitor (logiciel de messagerie). Les hachages sont les clés API qui appartiennent à un client. – rickvug

+0

Eh bien, le conseil est toujours valable pour les questions concernant comment et pourquoi vous devriez stocker les choses d'une manière particulière. Bonne chance! – Nolte

Questions connexes