2009-04-17 2 views
0

foreach 루프의 결과를 나중에 사용할 수있는 문자열 변수로 만들고 싶습니다 (그래서 foreach 루프를 사방에 붙여 넣을 필요가 없습니다). 나는 "에코"와 대입 연산자를 대체 할 경우, 그것은 잘 작동이 PHP 반복은 왜 작동하지 않을까요?

foreach($pairs as $d=>$m) { 
$orderedpairs .= "[".$d."],[".$m."]"+"<br />"; 
} 
echo $orderedpairs; 

루프가 괜찮습니다, 그래서, 난 그냥 문제에서의 변수 할당 생각 :이 있습니다. 감사!

+2

사이드 노트 : 더 읽기 쉽도록 printf 또는 문자열 보간을 사용하는 것이 좋습니다. (1) $ orderedpairs. = "[$ d], [$ m]
"; (2) $ orderedpairs. = printf ('[% s], [% s]
', $ d, $ m); – Matt

+0

루프를 시작하기 전에 $ orderedpairs를 초기화하는 것을 잊지 마십시오. 이를 생략하는 것은 그 자체로 문제는 아니지만 반드시 수행해야합니다. 그렇지 않으면 통지가 throw 될 수 있습니다 (이상한 버그 나 보안 결함이 발생할 수 있습니다, register_global을 기억하십시오). – stefs

답변

7

- 다른 사람이 말을하기 위해 무엇을 .

달리으로 변경, 당신의 변수의 범위는 문제가되지 않습니다. 은 루프 내에서이를 선언하고 이후에 액세스 할 수 있습니다. PHP 변수는 Java, C# 및 다른 언어와 같이 범위가 지정되지 않습니다. 귀하의 경우 운영자와 연결할 필요는 실제로 없다

+0

귀하의 답변은 어떻게 되나요? –

+0

은 똑같은 것을 쓰고있었습니다! –

+0

이제는 "+"를 그냥 눌러서 작동합니다. 루프 외부에서 $ orderedpairs를 정의해야하는 이유를 좀 더 설명 할 수 있습니까? 범위가 문제가 아닌 것처럼 보입니다. 그냥 스타일일까요? –

12

연결을 위해 +가 있습니다. 너는 필요해.

또한 루프 앞에 $ orderedpairs를 빈 문자열로 정의해야합니다.

+0

예. 이게 문제 야. –

+0

마지막 "+"을 누르면 작동합니다. 그러나 나는 $ orderspairs를 정의하지 않았다. 내가 왜 그렇게해야하는지에 대해 확장 할 수 있습니까? –

+2

좋은 연습 일 필요는 없습니다. – Matt

0

인스턴스화하고 범위로 가져 오기 전에 $ orderedpairs를 빈 문자열로 선언 했습니까? 또한 최종 + 실제로 있어야합니다. ? 플러스 기호가 연결이 실패의 원인이되는

4

, 당신은 다만 할 수 있습니다

$orderedpairs .= "[$d],[$m]<br />"; 

및 PHP는 값으로 변수를 대체합니다.

관련 문제