ฉันจะสร้างอาร์เรย์ด้วยคู่ค่าคีย์ได้อย่างไร


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
คนที่มีตัวแทนมากกว่าสามารถแก้ไขคำถามนี้และแก้ไขตัวแบ่งบรรทัดได้หรือไม่
Brian Ramsay

คำตอบ:



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

12
คำตอบง่ายๆนี้อธิบายได้ดีสำหรับฉัน
Blowsie

สิ่งเดียวในการแก้ปัญหานี้คือวิธีนี้คุณสามารถเพิ่มคู่คีย์ - ค่าที่ส่วนท้ายของอาร์เรย์เท่านั้นแม้ว่าคุณจะมีคีย์จำนวนเต็มก็ตาม อาร์เรย์ PHP $data = ['user_email' => joy@cargomar.org'] + $dataจะได้รับคำสั่งดังนั้นหากคุณต้องการที่จะย่อหน้าอาร์เรย์กับคู่ค่าคีย์คุณต้องทำเช่นนี้:
totymedli

16

PHP ของฉันค่อนข้างเป็นสนิม แต่ฉันเชื่อว่าคุณกำลังมองหางานที่ทำดัชนี เพียงใช้:

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

ในอาร์เรย์ PHP เป็นแผนที่จริง ๆ ซึ่งคีย์อาจเป็นจำนวนเต็มหรือสตริงก็ได้ ตรวจสอบPHP: Arrays - คู่มือสำหรับข้อมูลเพิ่มเติม


2

คุณสามารถสร้างคีย์ - ค่าอาร์เรย์ค่าเดียวเป็น

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

ภายในขณะวนซ้ำแล้วใช้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.