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  ) 

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.


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

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' => joy@cargomar.org'] + $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.


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 .


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

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'];            
   }

}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.