Comment créer un tableau avec des paires clé / valeur?


117

Comment puis-je ajouter des paires clé / valeur à un tableau?

Cela ne fonctionnera pas:

public function getCategorieenAsArray(){

    $catList = array();

    $query = "SELECT DISTINCT datasource_id, title FROM table";
    if ($rs=C_DB::fetchRecordset($query)) {
        while ($row=C_DB::fetchRow($rs)) {
            if(!empty($row["title"])){
                array_push($catList, $row["datasource_id"] ."=>". $row["title"] );
            }
        }
     }

    return($catList);
}

Parce que ça me donne:

Array ( [0] => 1=>Categorie 1 [1] => 5=>Categorie 2 [2] => 2=>Caterorie 2 ) 

Et j'attends:

Array ( [1] =>Categorie 1 [5] => Categorie 2  ) 

2
Quelqu'un avec plus de représentants peut-il modifier cette question et corriger le saut de ligne?
Brian Ramsay

Réponses:


150

Utilisez la syntaxe entre crochets :

if (!empty($row["title"])) {
    $catList[$row["datasource_id"]] = $row["title"];
}

$row["datasource_id"]est la clé dans laquelle la valeur de $row["title"]est stockée.


155
$data =array();
$data['user_code']  = 'JOY' ;
$data['user_name']  = 'JOY' ;
$data['user_email'] = 'joy@cargomar.org';

12
Cette réponse simple l'explique bien pour moi.
Blowsie

La seule chose avec cette solution est que de cette façon, vous ne pouvez ajouter que des paires clé-valeur à la fin du tableau, même si vous avez des clés entières. Tableaux PHP sont commandés, donc si vous voulez préfixer un tableau avec une paire valeur clé, vous devez faire ceci: $data = ['user_email' => joy@cargomar.org'] + $data.
totymedli

16

Mon PHP est un peu rouillé, mais je crois que vous recherchez une affectation indexée. Utilisez simplement:

$catList[$row["datasource_id"]] = $row["title"];

Dans les tableaux PHP sont en fait des cartes, où les clés peuvent être des entiers ou des chaînes. Consultez PHP: Arrays - Manual pour plus d'informations.


2

Vous pouvez créer la valeur-clé du tableau à valeur unique comme

$new_row = array($row["datasource_id"]=>$row["title"]);

à l'intérieur de la boucle while, puis utilisez la array_mergefonction en boucle pour combiner chaque nouveau $new_rowtableau.


1

Vous pouvez utiliser cette fonction dans votre application pour ajouter des clés au tableau indexé.

public static function convertIndexedArrayToAssociative($indexedArr, $keys)
{
    $resArr = array();
    foreach ($indexedArr as $item)
    {
        $tmpArr = array();
        foreach ($item as $key=>$value)
        {
            $tmpArr[$keys[$key]] = $value;
        }
        $resArr[] = $tmpArr;
    }
    return $resArr;
}

0

Pas besoin de la fonction array_push. Si vous voulez ajouter plusieurs éléments, cela fonctionne très bien. essayez simplement ceci et cela a fonctionné pour moi

class line_details {
   var $commission_one=array();
   foreach($_SESSION['commission'] as $key=>$data){
          $row=  explode('-', $key);
          $this->commission_one[$row['0']]= $row['1'];            
   }

}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.