Làm cách nào để tạo một mảng với các cặp giá trị khóa?


117

Làm cách nào để thêm các cặp giá trị khóa vào một mảng?

Điều này sẽ không hoạt động:

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

Bởi vì nó cho tôi:

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

Và tôi mong đợi:

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

2
Ai đó có nhiều đại diện hơn có thể chỉnh sửa câu hỏi này và sửa lỗi ngắt dòng không?
Brian Ramsay,

Câu trả lời:



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

12
Câu trả lời đơn giản này giải thích nó tốt cho tôi.
Blowsie

Điều duy nhất với giải pháp này là theo cách này, bạn chỉ có thể thêm các cặp khóa-giá trị vào cuối mảng, ngay cả khi bạn có các khóa số nguyên. PHP mảng được sắp xếp, vì vậy nếu bạn muốn thêm vào trước một mảng với một cặp khóa-giá trị, bạn phải làm điều này: $data = ['user_email' => joy@cargomar.org'] + $data.
totymedli

16

PHP của tôi hơi cũ, nhưng tôi tin rằng bạn đang tìm kiếm bài tập được lập chỉ mục. Chỉ cần sử dụng:

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

Trong PHP, mảng thực sự là bản đồ, trong đó các khóa có thể là số nguyên hoặc chuỗi. Kiểm tra PHP: Mảng - Hướng dẫn sử dụng để biết thêm thông tin.


2

Bạn có thể tạo khóa-giá trị của mảng giá trị đơn như

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

bên trong vòng lặp while, và sau đó sử dụng array_mergehàm trong vòng lặp để kết hợp từng $new_rowmảng mới .


1

Bạn có thể sử dụng chức năng này trong ứng dụng của mình để thêm khóa vào mảng được lập chỉ mục.

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

Không cần hàm array_push. Nếu bạn muốn thêm nhiều mục, nó hoạt động tốt. chỉ cần thử cái này và nó đã làm việc cho tôi

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

}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.