2009-07-16 10 views
94

Comment puis-je ajouter des paires de valeurs clés à un tableau?comment puis-je ajouter des paires de valeurs clés à 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 qu'il me donne:

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

et je pense:

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

Quelqu'un avec plus de représentant peut-il éditer cette question et corriger le saut de ligne? –

Répondre

123

Utilisez le square bracket syntax:

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

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

15

Mon PHP est un peu rouillé, mais je crois vous recherchez une affectation indexée. il suffit d'utiliser:

$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.

119
$data =array(); 
$data['user_code'] = 'JOY' ; 
$data['user_name'] = 'JOY' ; 
$data['user_email'] = '[email protected]'; 
+9

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

2

Vous pouvez créer le tableau de valeur valeur-clé unique comme

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

à l'intérieur tout en boucle, puis utilisez array_merge fonction dans la boucle pour combiner chaque nouveau tableau $new_row.

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 fonction array_push. Si vous voulez ajouter plusieurs éléments, cela fonctionne très bien. il suffit d'essayer 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'];    
    } 

} 
Questions connexes