2014-01-14 5 views
0

도움이 필요합니다. 내가 만든 구조 때문에 echo를 사용할 수 없습니다. 나는 이유를 설명 할 시간이 없다. 하지만 내 질문은 여러 가지 데이터를 반환 할 수있는 방법이 무엇입니까? 예를 들면 다음과 같습니다.둘 이상의 값을 반환하려면 어떻게해야합니까?

final public function getCamps() 
     { 
      $campaigns = mysql_query("SELECT * From cms_news WHERE campaign='1'"); 

      while($skriv = mysql_fetch_assoc($campaigns)) 
      { 
      return 
      ' 
      <hr/> 
      <div class="campaign_images"> 
      </div> 
      <div class="campaign_content"> 
      <b>'.$skriv['title'].'</b><br> 
      '.$skriv['shortstory'].' 
      </div> 
      <p class="gothere">Go there &raquo;</p> 
      <div style="clear:both;"></div> 
      <hr/> 

      '; 
      } 

     } 

그러나 문제는 리턴 값이 1을주고 스크립트를 중지한다는 것입니다. 어떻게 해결할 수 있습니까? 배열이나 뭔가를 반환해야한다는 말을 들었지만 어떻게해야합니까? 감사. 내 영어 미안해.

답변

0

그냥이 시도 :이 도움이

final public function getCamps() 
    { 
     $campaigns = mysql_query("SELECT * From cms_news WHERE campaign='1'"); 
     $data_return = ""; 
     while($skriv = mysql_fetch_assoc($campaigns)) 
     { 
     $data_return .= //this returns multiple values from your db 
     ' 
     <hr/> 
     <div class="campaign_images"> 
     </div> 
     <div class="campaign_content"> 
     <b>'.$skriv['title'].'</b><br> 
     '.$skriv['shortstory'].' 
     </div> 
     <p class="gothere">Go there &raquo;</p> 
     <div style="clear:both;"></div> 
     <hr/> 

     '; 
     } 
    return($data_return); 

    } 

희망을.

+0

대단히 감사합니다! 그러나 return = ""; 부분은 나에게 오류를 줬다. – Eymen

+0

죄송합니다, 위의 업데이트 된 코드를 참조하십시오 :) – Aljie

1

데이터를 배열에 추가하고이를 반환하십시오. 개인적으로 나는 루프에서 HTML을 추가 할 것이지만

$data = $obj->getCamps(); 

echo implode($data); 

:

$data = array(); 

while($skriv = mysql_fetch_assoc($campaigns)) 
{ 
    $data[] = 
    ' 
    <hr/> 
    <div class="campaign_images"> 
    </div> 
    <div class="campaign_content"> 
    <b>'.$skriv['title'].'</b><br> 
    '.$skriv['shortstory'].' 
    </div> 
    <p class="gothere">Go there &raquo;</p> 
    <div style="clear:both;"></div> 
    <hr/> 

    '; 
} 

return $data; 

당신은 그럼 그냥 출력 내용 다음 implodeecho 필요한 경우

. 난 그냥 배열에 행 데이터를 추가하고 그 반환 것 :

final public function getCamps() 
{ 

    $data = array(); 

    $campaigns = mysql_query("SELECT * From cms_news WHERE campaign='1'"); 

    while($skriv = mysql_fetch_assoc($campaigns)) 
    { 
    $data[] = $skriv; 
    } 

    return $data; 

} 

을 그리고 반환되는 배열을 반복하고 추가 HTML : 당신은 쉽게 여러 개의 키 배열을 반환 할 수 있습니다

<?php foreach ($obj->getCamps() as $camp) { ?> 

    <hr> 

    <div class="campaign_images"></div> 

    <div class="campaign_content"> 

    <b><?php echo $camp['title']; ?></b> 

    <br> 

    <?php echo $camp['shortstory']; ?> 

    </div> 

    <p class="gothere">Go there &raquo;</p> 

    <div style="clear:both;"></div> 

    <hr> 

<?php } ?> 
+0

에코를 사용할 수 없습니다. echo를 사용하지 않고 데이터를 출력하고 싶습니다. – Eymen

+0

데이터를 출력하려면'echo' (또는'print')해야합니다. – MichaelRushton

0

/값 쌍. 수신 측에서 사용하는 방법도 알면됩니다.

return [ 
    'html' => '<hr/><div class="campaing_images>....</div>', 
    'error' => false, 
] 

은 또한 단지 즉시 return 문을 실행하는이, 제어 기능의 범위를 떠날 때 정상적인 배열 인덱스 버전

return [ 
    '<hr/><div class="campaing_images>....</div>', 
    false 
] 
1

을 할 수 있습니다. return은 한 번만 사용할 수 있습니다. 그것은 마치 이 원하는 것 같습니다.은 문자열을 만들고 모든 것을 반환합니다. 그래서이 대신 :

while(condition) { 
    return value; 
} 

는이 작업을 수행 :

result = ''; 
while(condition) { 
    result .= value; 
} 
return result; 

이 함수 내에서 결과를 집계하기위한 표준 패턴이다.

관련 문제