Bagaimana cara membuat array dengan pasangan nilai kunci?

117

Bagaimana cara menambahkan pasangan nilai kunci ke array?

Ini tidak akan berhasil:

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

Karena itu memberi saya:

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

Dan saya berharap:

Array ( [1] =>Categorie 1 [5] => Categorie 2  ) 
sanders
sumber
2
Bisakah seseorang dengan perwakilan lebih mengedit pertanyaan ini dan memperbaiki jeda baris?
Brian Ramsay

Jawaban:

150

Gunakan sintaks kurung siku :

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

$row["datasource_id"]adalah kunci di mana nilai $row["title"]disimpan.

Gumbo
sumber
155
$data =array();
$data['user_code']  = 'JOY' ;
$data['user_name']  = 'JOY' ;
$data['user_email'] = '[email protected]';
kegembiraan
sumber
12
Jawaban sederhana ini menjelaskannya dengan baik bagi saya.
Blowsie
Satu-satunya hal dengan solusi ini adalah dengan cara ini Anda hanya dapat menambahkan pasangan nilai kunci ke akhir larik, meskipun Anda memiliki kunci bilangan bulat. PHP array memerintahkan, jadi jika Anda ingin tambahkan sebuah array dengan pasangan kunci-nilai, Anda harus melakukan ini: $data = ['user_email' => [email protected]'] + $data.
totymedli
16

PHP saya sedikit berkarat, tapi saya yakin Anda sedang mencari tugas yang diindeks. Cukup gunakan:

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

Dalam array PHP sebenarnya adalah peta, di mana kuncinya bisa berupa bilangan bulat atau string. Lihat PHP: Array - Manual untuk informasi lebih lanjut.

WCWedin
sumber
2

Anda dapat membuat nilai kunci array nilai tunggal sebagai

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

di dalam while loop, lalu gunakan array_mergefunction in loop untuk menggabungkan setiap $new_rowarray baru .

Rajan Rawal
sumber
1

Anda dapat menggunakan fungsi ini dalam aplikasi Anda untuk menambahkan kunci ke array yang diindeks.

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

Tidak perlu fungsi array_push. Jika Anda ingin menambahkan beberapa item, itu berfungsi dengan baik. coba saja ini dan itu berhasil untuk saya

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

}
kekuatan radhason
sumber