2011-11-20 1 views
0

현재 연관 배열을 많이 사용하는 CakePHP를 사용하고 있습니다. 내 응용 프로그램에있는 함수 중 하나는이 배열의 일부 데이터에서 별도의 변수를 만들면 유용 할 것입니다. 예를 들어, 배열은 다음과 같이 보일 수 있습니다 :PHP 함수에서 기호 테이블에 변수 추가

Array 
(
    [User] => Array 
     (
      [id] => 1 
      [name] => Joe Bloggs 
      [email] => [email protected] 
     ) 

    [Post] => Array 
     (
      [id] => 1 
      [title] => Hello World 
     ) 

    [Profile] => Array 
     (
      [id] => 1 
      [location] => London 
     ) 

) 

배열을 3 개로 분할하고 세 개의 새로운 변수를 부여 할 수있는 함수를 만들고 싶습니다.

나는 extract()을 살펴 봤지만 내가 좋아하는 방식으로는 잘 작동하지 않는다.

$user: 

Array 
(
    [User] => Array 
     (
      [id] => 1 
      [name] => Joe Bloggs 
      [email] => [email protected] 
     ) 
) 

$post: 

Array(
    [Post] => Array 
     (
      [id] => 1 
      [title] => Hello World 
     ) 
) 

$profile: 

Array(
    [Profile] => Array 
     (
      [id] => 1 
      [location] => London 
     ) 
) 

는 심볼 테이블에 이러한 변수를 추가 할 수 또는 내가 그들을 반환 할 수있는 유일한 붙어 것이다 함수를 만들 수 있습니다 : I는 다음과 같은 세 가지 새로운 변수를 만들시겠습니까?

+0

당신은'$ 포스트 = 배열 ​​($ 사용자 [ '포스트']) 같은 것을 원하는을,'? – deceze

+0

조금 중복 된 것 같습니다. 왜? – Ross

답변

1

어떻게이 기능을 사용할 수 있습니까? 도움이

foreach($input_array as $key => $value){ 

    $variable_name = strtolower($key); 
    $$variable_name = array($value); 

} 

희망 ...

+0

내가 찾는 것은 $$입니다. 그러면 변수가 호출 함수에서 사용 가능합니까? 어디에서 PHP 설명서에서 이것에 대한 정보를 찾을 수 있습니까? '$$'를 검색 할 때 검색해야 할 항목이 무엇인지 모르는 것이 저를 많이 얻지 못합니다. –

+0

변수 이름으로 $ variable_name의 값을 사용합니다.이 변수는 문자열이어야합니다. – Homer6

+0

@Mike http://php.net/manual/en/language.variables.variable.php – deceze

2
$array = array(
'value1'=> array('name' => 'john'), 
'value2'=> array('name' => 'sim') 
); 
function createVars($data) { 
    foreach ($data as $key => $val) { 
    global ${$key}; 
    ${$key} = $val; 
    } 
} 
createVars($array); 
// Now you should be able to access $value1 and $value2 

체크 아웃이 링크 http://php.net/manual/en/language.variables.variable.php

+0

변수의 범위는 무엇입니까? 그것이 호출 된 곳 또는 함수 내에서 액세스 할 수 있습니까? –

+0

다음 http://php.net/manual/en/language.variables.scope.php를 읽으십시오. – Cyclonecode

+0

또한 추출 기능을 체크 아웃해야합니다. http://php.net/manual/en/function.extract.php – Cyclonecode