Wie kann ich ein Array mit Schlüsselwertpaaren erstellen?

117

Wie kann ich einem Array Schlüsselwertpaare hinzufügen?

Das wird nicht funktionieren:

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);
}

Weil es mir gibt:

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

Und ich erwarte:

Array ( [1] =>Categorie 1 [5] => Categorie 2  ) 
Schleifmaschinen
quelle
2
Kann jemand mit mehr Vertretern diese Frage bearbeiten und den Zeilenumbruch beheben?
Brian Ramsay

Antworten:

150

Verwenden Sie die Syntax in eckigen Klammern :

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

$row["datasource_id"]ist der Schlüssel, in dem der Wert von $row["title"]gespeichert ist.

Gumbo
quelle
155
$data =array();
$data['user_code']  = 'JOY' ;
$data['user_name']  = 'JOY' ;
$data['user_email'] = '[email protected]';
Freude
quelle
12
Diese einfache Antwort erklärt es mir gut.
Blowsie
Das einzige, was mit dieser Lösung zu tun hat, ist, dass Sie auf diese Weise nur Schlüssel-Wert-Paare am Ende des Arrays hinzufügen können, selbst wenn Sie Ganzzahlschlüssel haben. PHP-Arrays sind geordnet. Wenn Sie also einem Array ein Schlüssel-Wert-Paar voranstellen möchten, müssen Sie Folgendes tun : $data = ['user_email' => [email protected]'] + $data.
Totymedli
16

Mein PHP ist etwas verrostet, aber ich glaube, Sie suchen nach einer indizierten Zuordnung. Verwenden Sie einfach:

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

In PHP sind Arrays tatsächlich Maps, bei denen die Schlüssel entweder Ganzzahlen oder Zeichenfolgen sein können. Weitere Informationen finden Sie im PHP: Arrays - Handbuch .

WCWedin
quelle
2

Sie können den Einzelwert-Array-Schlüsselwert als erstellen

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

innerhalb der while-Schleife und verwenden Sie dann die array_mergeFunktion in der Schleife, um jedes neue $new_rowArray zu kombinieren .

Rajan Rawal
quelle
1

Mit dieser Funktion können Sie in Ihrer Anwendung Schlüssel zum indizierten Array hinzufügen.

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
quelle
0

Die Funktion array_push ist nicht erforderlich. Wenn Sie mehrere Elemente hinzufügen möchten, funktioniert dies einwandfrei. Probieren Sie es einfach aus und es hat bei mir funktioniert

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

}
Radhason Macht
quelle