2014-09-04 8 views
0

DB의 결과에 따라 동적으로 문자열을 작성하고 싶습니다. 이 같은 지금까지 내가 만든 무언가 : 물론PHP에서 <<< EOD 문자열을 동적으로 작성하는 방법

 $feed = Some essential xml that needs to go here; 
     for ($a = 0; $a < count($images); $a++) 
     { 
      if ($a == 0) 
      { 
       $image_type = "Main"; 
      } 
      else 
      { 
       $image_type = "PT". $a; 
      } 
      $feed += <<<EOD 
    <Message> 
    <MessageID>1</MessageID> 
    <OperationType>Update</OperationType> 
    <ProductImage> 
     <SKU>{$data['sku']}</SKU> 
     <ImageType>{$image_type}</ImageType> 
     <ImageLocation>{$images[$a]}</ImageLocation> 
    </ProductImage> 
    </Message> 
EOD; 

     } 

     $feed += <<<EOD 
</AmazonEnvelope>   
EOD; 
echo $feed; 

이 예는 내가이 일을하고자하는 방법으로 내 코드를 선물하고 싶어하지만 아무 것도 반환하지 않습니다. 이 경우에 $ feed 문자열을 동적으로 빌드합니까?

답변

3

PHP 문자열 연결은 이 아닌 . 연산자로 수행됩니다. 따라서 연결 및 할당도 .=이 아니라 +=이됩니다. 관련 라인 모두에서이를 수정하면 잘 작동합니다.

다른 연산자의 근본적인 이유는 다른 대중적인 언어와 달리 PHP의 약점이 있기 때문입니다. + 연산자 수학적 연산을 위해 예약 등이므로, PHP이 다른 2 개 라인 '올바르게'처리 할 수 ​​

echo '123'+'123'; // Shows 246 
echo '123'.'123'; // Shows 123123 

Example.

+0

자바 스크립트도 약한 유형이지만 추가 및 연결 모두에 여전히 '+'가 사용됩니다. 물론 이것은 자주 버그를 유발합니다. – Barmar

+0

정의가 느슨합니다. 자바 스크립트는 암시 적 변환이 적습니다. 특히'string'에서'int'에 이르기까지,이 점에서 더 엄격하게 사용할 수 있으며 추가 연산자가 필요하지 않습니다. C++은 강력한 형식이지만 연산자 오버로딩을 통해 이러한 모든 동작을 허용하며 변환 연산자 과부하를 통해 극히 약하게 형식화 된 것처럼 보일 수 있습니다. –

+0

그것은 효과가 있었다. 고맙습니다! – user1029829

관련 문제