키 값 쌍으로 배열을 만들려면 어떻게해야합니까?


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

답변:


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
이 간단한 대답은 나를 위해 잘 설명합니다.
Blowsie 2013-01-28

이 솔루션의 유일한 점은 정수 키가 있더라도 배열 끝에 키-값 쌍만 추가 할 수 있다는 것입니다. 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.