2012-02-25 5 views
0

PHP의 list 키워드는 key => value의 형태로PHP 다중 변수 할당

$a = array(1,22); 
    list($b, $c) = $a; 
    var_dump("$a $b $c"); 

아래 그러나 배열 $ A2에 관해서는 배열 $ A에서 변수를 주셔서 좋은 아래에서 사용하지 못했습니다. list

$a2 = array('b'=>1,'c'=>22); 
    list($b, $c) = $a2; 
    list($bkey, $b, $ckey, $c) = $a2; 
    list(list($bkey, $b), list($ckey,$c)) = $a2; 

    var_dump("$a2 $b $c"); 

위의 세 가지 할당이 모두 실패합니다. 나는 포기한다.

& 키를 배열 $ a2에 가져 오는 방법을 알고 있다면 도와주세요!

+1

* list()는 숫자 배열에서만 작동하며 숫자 인덱스는 0부터 시작한다고 가정합니다. * [참조] (http://php.net/manual/en/function.list.php) – Josh

답변

1

Mr Evil (Col Shrapnel, 그의 프로필 참조)의 의견에 따라 다음 두 가지 방법이 다르다고 말한 적은 없지만 사용자 입력 데이터에 이러한 방법을 사용하면 보안 문제가 발생할 수 있다고 조언했습니다. 자신의 위험이나 사용자가 입력 한 데이터가없는 경우에 사용하십시오.


associatieve 배열 작동하지 않는 것

, 당신은 그러나이 같은 수행 할 수 있습니다

foreach ($array as $key => $value) { 
    $$key = $value; 
} 

예 :

$a2 = array('b'=>1,'c'=>22); 
foreach ($a2 as $key => $value) { 
    $$key = $value; 
} 

echo $b . '<br>'; 
echo $c; 

결과 :

1 
22 

또한 사용자가 입력 한 값을 사용하면 보안 상 위험 할 수 있으므로 extract() 기능을 사용할 수도 있지만 일반적으로 사용하지 마십시오. 선택에 따라 데이터를 사용하거나 사용자 측에서 데이터를 가져 오지 않을 수도 있습니다.

+2

@ Col.Shrapnel : 당신의 언어를 경계하십시오, 바보, 무지한! 이 사람은 항상 여기 모든 문제를 일으켰습니다. 그가 말한 것을 그의 프로필에서 확인하십시오. 그는 여기서 금지되어야합니다. – Sarfraz

+0

@Safraz, 1 년 밖에 근무하지 않고 수석 엔지니어가 되었습니까? 훌륭합니다. :-D – Mackintoast

+0

@Mackintoast : 1 년 동안 일 했습니까? 나는 그것을 얻지 못 하느냐? – Sarfraz

0

당신은 당신이 각 기능을 사용한다고 생각

+0

다른 사람이이 문제로 어려움을 겪을 수 있도록 링크를 추가하거나 기능을 설명하고 싶을 수도 있습니다. – Sgoettschkes

1

필요가 extract() 기능입니다 보인다.

each() 배열에서 현재 키와 값 쌍을 반환하고 배열 커서를 전진시킵니다.