[RESOLU] Changer les clés d'un tableau multidimensionnel

azephpp
Invité n'ayant pas de compte PHPfrance

17 mars 2017, 13:07

Bonjour,

Bon, je m'en reviens vers vous après 3 heures sur le problème, je n'en peux plus...

J'ai un array que voici :

Code : Tout sélectionner

D:\wamp64\www\index.php:9: array (size=4) 0 => array (size=5) 'id' => string '3' (length=1) 'groupname' => string 'test' (length=4) 'cinema_group' => string '2' (length=1) 'cinema_name' => string 'test_1' (length=6) 'cinema_location' => string 'test_location1' (length=14) 1 => array (size=5) 'id' => string '4' (length=1) 'groupname' => string 'test' (length=4) 'cinema_group' => string '2' (length=1) 'cinema_name' => string 'test_2' (length=6) 'cinema_location' => string 'test_location2' (length=14) 2 => array (size=5) 'id' => string '5' (length=1) 'groupname' => string 'test' (length=4) 'cinema_group' => string '2' (length=1) 'cinema_name' => string 'test3' (length=5) 'cinema_location' => string 'test_location3' (length=14) 3 => array (size=5) 'id' => string '6' (length=1) 'groupname' => string 'test' (length=4) 'cinema_group' => string '2' (length=1) 'cinema_name' => string 'test4' (length=5) 'cinema_location' => string 'test_location4' (length=14)
Je veux juste modifier les clés 0, 1, 2 et 3 par la valeur de l'id, pour avoir ca :

Code : Tout sélectionner

D:\wamp64\www\index.php:9: array (size=4) 3 => ... 4 => ... 5 => ... 6 => ...
Aucun moyen d'y arriver, j'ai passé 3 heures en essayant avec les fonctions php sur les tableaux, des foreach...

Si vous avez une solution, je suis preneur !

ViPHP
ViPHP | 2566 Messages

17 mars 2017, 14:19

Je suppose que ce sont les enregistrements d'une base de données que tu recois telquel.
$results = array();
foreach ($records as $record) {
   $cle = record['id'];
   $results[$cle] = $record;
}
$records = $results;

azephp
Invité n'ayant pas de compte PHPfrance

17 mars 2017, 15:42

Merci, ta solution fonctionne, c'est cool !

Cependant, j'aimerais ne pas avoir à recréer de tableau .

ViPHP
ViPHP | 2566 Messages

17 mars 2017, 16:23

Ben crée le directement avec les bonnes clés :)
Mais tu ne montres pas comment tu crées le tableau et tu ne dis pas pourquoi tu veux l'id comme clé.

azephp
Invité n'ayant pas de compte PHPfrance

22 mars 2017, 15:32

Ce tableau résulte d'un fetchAll.
Je veux les ID en clé pour pouvoir facilement les retrouver

Eléphant du PHP | 60 Messages

22 mars 2017, 16:28

@azephp
Il existe une fonction php qui répond exactement à ta problématique, à savoir [url=http://php.net/array-column]array_column[/url]

Du coup si ton tableau est contenu dans la variable $records, ton nouveau tableau indexé par les id s'obtient avec ceci

[PHP]$recordsById = array_column($records, null, 'id');[/PHP]

cf. http://ideone.com/yIMqOl

N.B. [url=http://php.net/array-column]array_column[/url] a été introduite à partir de php 5.5.0 cependant un backport existe pour les versions inférieures https://github.com/ramsey/array_column/ ... column.php
"La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"
Albert Einstein.