연관 배열에 항목 추가


88
//go through each question
foreach($file_data as $value) {
   //separate the string by pipes and place in variables
   list($category, $question) = explode('|', $value);

   //place in assoc array
   $data = array($category => $question);
   print_r($data);

}

이것은 데이터의 가치를 대체하기 때문에 작동하지 않습니다. 그래도 각 루프마다 연관 값을 추가하려면 어떻게해야합니까? $file_data동적 크기를 갖는 데이터의 배열입니다.

답변:


96

나는 당신이 원하는 것 같아요 $data[$category] = $question;

또는 범주를 질문 배열에 매핑하는 배열을 원하는 경우 :

$data = array();
foreach($file_data as $value) {
    list($category, $question) = explode('|', $value, 2);

    if(!isset($data[$category])) {
        $data[$category] = array();
    }
    $data[$category][] = $question;
}
print_r($data);

9
다른 프로그래머들도 오타를하지 않거나 수정해야하기 때문에 오타를 싫어할 것입니다.
ThiefMaster 2011 년

나는 array_push에 너무 익숙했고, 기본을 잊었다! 정말 도움이되었습니다!
CLOUGH

121

간단히 할 수 있습니다.

$data += array($category => $question);

PHP 5.4 이상에서 실행중인 경우

$data += [$category => $question];

21
그런게 어딨어?

9
이것은 연관 배열에 항목을 추가하는 정답입니다.
andreszs

7
여러 요소도 추가하십시오. $ data + = [ 'x'=> 1, 'y'=> 2];
split19

이것이 어레이 내부에 둘 이상의 객체로 끝나는 것을 원하지 않는 경우입니다
DragonFire

참고 :이 방법은 배열에 동일한 키가있는 요소가 없어서 기존 요소를 덮어 쓸 수없는 경우 작동 할 수 있습니다.
Mohamad Hamouday

29

for 루프 이전 :

$data = array();

그런 다음 루프에서 :

$data[] = array($catagory => $question);

2
그렇게하면 $ data = array ();를 사용하여 먼저 배열을 초기화하는 것을 잊지 마십시오. 그렇지 않으면 PHP가 통지를 던집니다
Alex Bailey

나는 그것이 게시 된대로 내가 그의 코드에서 초기화되는 것을 보지 못했다는 것을 깨달았으므로 내 대답을 캐시한다고 생각합니다. 나는 그것을 추가 나는 나중에 당신의 코멘트를 보았다 그래서 :-) 감사합니다
모에

4
이것은 배열 내부에 배열을 만들었 기 때문에 작동하지 않았습니다. 내 질문이 당신을 통해 다소 떨어져서 미안합니다.
Phil

PHP 5.4 이상으로 코드를 조금 더 적게 작성할 수 있습니다.$data=[]; $data[] = [$category => $question];
Justin

$res = array(); $res[] = array('foo' => $bar); $foo = $res['foo'];정의되지 않은 색인 : foo in ..으로 실패 하지만 아래 제안 된 더하기 기호가 작동합니다.
qrtLs

7

나는 이것이 오래된 질문이라는 것을 알고 있지만 다음을 사용할 수 있습니다.

array_push($data, array($category => $question));

이것은 array당신의 현재의 끝에 밀어 넣을 것 array입니다. 또는 배열 끝에 단일 값을 추가하려는 경우 더 이상 배열이 아닌 다음을 사용할 수 있습니다.

array_push($data,$question);

6

2d 연관 배열에 추가해야하는 사람이라면 위에 주어진 대답을 사용하고 다음과 같은 코드를 사용할 수도 있습니다.

 $data[$category]["test"] = $question

그런 다음이를 호출 할 수 있습니다 (결과를 테스트하려면 다음을 수행하십시오.)

echo $data[$category]["test"];

$ question을 인쇄해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.