2010-11-23 6 views
1

나는 다른 변수 중에서도 내가 제공 한 변수를 기반으로 전역 변수를 선언하려고하는 중입니다. 실패 부분은변수 이름을 가진 php 전역 변수

function setGlobalVariable($name) { 

    global $name, $arrayname_{$name}; 
} 

어떤 생각 글로벌 변수를하고있다? 고마워요 :)

+3

가 왜 변수와 글로벌 네임 스페이스를 오염할까요? – stillstanding

+0

가난한 개발자가 작성한 코드를 지원합니다. – zerkms

+0

하나만 : 전역 변수를 사용하지 마십시오. 일반적으로 이들은 문제의 강력한 원천입니다 (그리고 당신은 그것들을 필요로하지 않습니다). – Eineki

답변

6

정말로, 전역 변수를 그렇게 혼란스럽게합니다.

function setGlobalVariable($name) { 
    $GLOBALS['arrayname_' . $name] = 'yourvalue'; 
} 
3

당신은 그렇게 안 : 당신이 정말로 그렇게하려면

Anywaym 여기에 솔루션입니다. 전역 변수는 일반적으로 잘못된 설계의 표시입니다. 달성하고자하는 것은 무엇입니까? 더 나은 해결책이 있다고 확신합니다. 그 외에도 global은 그렇게 작동하지 않습니다. global은 함수 외부의 다른 변수를 로컬에서 사용할 수 있도록합니다. 전역을 만들려면 $_GLOBAL을 사용하십시오.

0

당신은 거의 옳았 습니다만, 그렇지는 않습니다. 가변 변수는 ${"name"}의 형식을 취하므로 찾으려는 것은 global ${"arrayname_$name"};입니다.

http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/c12np38 당신이 그렇게 생각한다면 주제에 대한 흥미로운 내용입니다.

그런 생각이 들기는하지만 코드를 잘못 설계하면 좋은 징표가 될 수 있습니다. 리팩토링을 고려하십시오 (예를 들어, 다른 배열이 유지되고 키에 의해 참조 될 수있는 하나의 알려진 배열을 유지하는 것).