2009-03-20 7 views
2

ok ... php에서 어떻게합니까? 다음과 같은 시나리오를 주어진 :다른 변수 이름으로 변수를 만드는 방법은 무엇입니까?

// array of letters 
var $letters = array('a', 'b', 'c'); 
// loop through array and create empty arrays with names like $a, $b, $c 
foreach($letters as $letter) { 
    var $$letter = array(); 
} 
+0

어레이가 이것보다 좋지 않습니까? –

+0

가능한 복제본 [PHP에서 생성 된 변수 이름을 사용할 수 있습니까?] (http://stackoverflow.com/questions/130240/can-i-use-a-generated-variable-name-in-php) – outis

답변

3

코드는 거의 정확했다. 2 행과 5 행에서 'var'을 제거하면됩니다.

// array of letters 
$letters = array('a', 'b', 'c'); 
// loop through array and create empty arrays with names like $a, $b, $c 
foreach($letters as $letter) { 
    $$letter = array(); 
} 

제대로 작동합니다 (설명한대로). 나는 그것을 시험했다.

more information on variable variables here.

이외에도 PHP에서 eval()을 사용하지 않는 것이 좋습니다.

+0

입니다. 나는 보지 못했던 어리석은 통어론 문제를 가지고 있었다. 감사합니다. – ocergynohtna

+0

php.ini (개발 컴퓨터에서)의 display_errors를 켜는 방법을 살펴보고 구문 분석 오류를 표시 할 필요가 있습니다. 또한 PHP 명령 행 인터페이스는 구문 검사 (즉, 보풀이라고도 함) 할 수 있습니다. 텍스트 편집기/IDE에 통합되어 있습니다. – thomasrutter

0

체크 아웃 eval() 함수 : Eval

+0

eval을 사용하지 말 것을 권장합니다. eval()이 유일한 해결책이거나, 심지어 가장 좋은 해결책 인 것은 아니며, 여기에 사용하는 것이 좋지 않다고 생각되며 이상하게 생각합니다. – thomasrutter

2

아마도이 작업을 원하지 않을 것입니다. 가변 변수를 사용하고자하는 것은 대개 데이터 구조 및/또는 과도한 영리성을 이해하지 못한다는 신호입니다. 당신이 정말로 이렇게 할 경우, 당신은 ... 같은

extract(array_fill_keys($letters, array())); 

뭔가를 말할 수 ...하지만 당신은하지 않았다 경우는 최선을 다 할 것이다. 중첩 된 배열을 사용하는 것이 훨씬 더 좋은 생각입니다. 특히 $nested['a'][] = 5이라고 말하면 PHP는 값을 배열에 추가하여 아무 것도 없으면 값을 만듭니다. 또는 $varname['key'] = 123이라고 말할 수 있으며 다시 PHP가 배열을 자동으로 만듭니다.

+0

가변 변수는 실제로 매우 유용하고 강력합니다. 배열에 대해 여러 번 사용하고 싶었습니다. 예 : Model 인스턴스를 채우기 위해 SQL을 다시 가져 오는 열의 배열을 사용합니다. – seanmonstar

+0

seanmonstar - extract()와 같은 의미인가요 http://us.php.net/manual/en/function.extract.php? –

+0

아니, 나는 추출물과 같은 의미는 없다. extract는 현재 스코프를 변수로 채 웁니다. 가변 변수를 사용하면 배열의 값을 모델 인스턴스의 속성으로 지정할 수 있습니다. – seanmonstar

관련 문제