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  ) 
ponceuses
la source
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.

Gombo
la source
155
$data =array();
$data['user_code']  = 'JOY' ;
$data['user_name']  = 'JOY' ;
$data['user_email'] = '[email protected]';
joie
la source
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' => [email protected]'] + $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.

WCWedin
la source
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.

Rajan Rawal
la source
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;
}
Mahmoud
la source
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'];            
   }

}
puissance radhason
la source