2009-11-11 3 views
0

일부 배열 요소를 추출하고 각 요소를 변수에 할당 한 다음이 요소를 배열에서 설정 해제 할 수 있기를 바랍니다. 배열 요소를 같은 이름의 변수에 할당합니까?

$one = "eins" ; 
unset($myarray["one"]) ; 

(내가 원하는 :

의 내가

$myarray = array ("one" => "eins", "two" => "zwei" , "three" => "drei") ; 

는 내가 직접했던 것처럼 함수가 결과와 동일 ("하나", $의에서 myArray)를 빨아 원하는 있다고 가정 해 봅시다 $ removeethese = array ("one", "three"))

function suck($x, $arr) { 
$x = $arr[$x] ; 
unset($arr[$x]) ; 
} 
(제거 할 요소의 이름을 포함하는 다른 배열에 대해이 함수를 루프에서 사용할 수 있어야합니다.

그러나 이것은 작동하지 않습니다. 나는 두 개의 prolbem을 가지고 있다고 생각합니다 - 변수에 "$ x"를 할당하는 방법과 함수 범위. 어쨌든, 내가 할 경우

suck("two",$myarray) ; 

$ 2는 생성되지 않고 $ myarray는 변경되지 않습니다.

+4

함수 이름 – Amarghosh

답변

1

당신은 변수 변수를 사용하여,

function suck($x, $arr) { 
    $$x = $arr[$x] ; 
    unset($arr[$x]) ; 
} 

을 할 수 있습니다. 이것은 새로운 변수를 "suck()"의 범위 내에서만 설정합니다.

는 또한 => 값 쌍은 당신이 원하는 난 단지 키를 가진 새로운 배열을 구축 할 것 extract()

+0

짧은 코멘트를 빨아 :이 일을 할 수있는 두 번째 인수'$ A 참조에 의한 인수 ('& $의 arr'를) arr'을해야 할 것입니다. –

+0

아니요 - 어느 쪽이든 기능 범위를 벗어나면 작동하지 않습니다. – gnud

+0

아니요, 적어도 배열에서 요소를 제거합니다. cletus에서'global $$ x '를 사용하면 전역을 변수의 로컬 범위와 병합 할 수 있습니다. –

2

에서 봐 가지고, 다음 extract()에 그것을 던져 수 있습니다.

3

이 시도 :

$myarray = array("one" => "eins", "two" => "zwei" , "three" => "drei"); 

suck('two', $myarray); 
print_r($myarray); 
echo $two; 

function suck($x, &$arr) { 
    global $$x; 
    $$x = $arr[$x]; 
    unset($arr[$x]); 
} 

출력 :

Array 
(
    [one] => eins 
    [three] => drei 
) 
zwei 
0

왜이 :

foreach ($myarray as $var => $val) { 
    $$var = $val; 
    unset($myarray[$var]); 
    echo "$var => ".$$var . "\n"; 
} 

출력

one => eins 
two => zwei 
three => drei 
0

질문을 이해했다면 두 가지 문제가 있습니다.

첫 번째는 $ x의 값을 키 - 값 쌍의 값으로 설정한다는 것입니다. 그런 다음 존재하지 않는 키를 설정 해제합니다. 마지막으로, 당신은 아무것도 반환하지 않습니다. 단일 요소 배열 $ 편곡을 감안할 때

= 배열 ​​("하나"=> "고용주 식별 번호 (EIN)를")와 함수는 이런 것입니다) (흡입 : 여기에 무슨 뜻인지이다 "(

먼저 당신이 빨아 호출을 ", $ arr). $ x 값은 $ x = $ arr [$ x] 라인에서 "eins"로 변경됩니다.

function suck($x, $arr) 
{ 
$tmp = $arr[$x]; 
unset($arr[$x]); 
return $tmp 
} 

그런 다음 당신이 얻을이 함수를 호출 할 수 있습니다 : 당신은 키 "고용주 식별 번호 (EIN)"와 배열 항목이 없기 때문에 다음 당신은

당신은이 작업을 수행해야

무효 해제 $의 X (시도 그러나 원하는 값을 (그리고 배열에서 쌍을 제거하십시오).예 :

<?php 
/* gets odd numbers in german from 
$translateArray = array("one"=>"eins", "two"=>"zwei", "three"=>"drei"); 
$oddArray = array(); 

$oddArray[] = suck($translateArray,"one"); 
$oddArray[] = suck($translateArray, "three"); 

?> 

이 결과는 요소 ("eins", "drei")가있는 배열 인 변환 배열이라고하는 배열입니다.

HTH JB

관련 문제