キーと値のペアで配列を作成するにはどうすればよいですか?


117

キーと値のペアを配列に追加するにはどうすればよいですか?

これは動作しません:

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

それは私に与えるので:

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

そして私は期待します:

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

2
より多くの担当者がこの質問を編集して改行を修正できますか?
ブライアンラムゼイ

回答:


150

括弧構文を使用します

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

$row["datasource_id"]の値$row["title"]が格納される場所のキーです。


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

12
この簡単な答えは私にとってそれをよく説明しています。
ブロージー2013年

このソリューションの唯一のことは、整数キーがある場合でも、この方法では配列の最後にキーと値のペアしか追加できないことです。PHP配列は順序付けされているため、配列にキーと値のペアを付加する場合は、次のようにする必要があります$data = ['user_email' => joy@cargomar.org'] + $data
totymedli

16

私のPHPは少し錆びていますが、インデックス付きの割り当てを探していると思います。単に使用してください:

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

PHPでは、配列は実際にはマップであり、キーは整数または文字列のいずれかです。詳細については、PHP:配列-マニュアルをご覧ください。


2

単一値配列のキーと値を次のように作成できます

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

whileループ内で、ループ内のarray_merge関数を使用して、それぞれの新しい$new_row配列を結合します。


1

アプリケーションでこの関数を使用して、インデックス付き配列にキーを追加できます。

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

array_push関数は必要ありません。複数の項目を追加する場合は、正常に機能します。単にこれを試してみて、それは私のために働いた

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

}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.