php
  • mysql
  • foreach
  • 2012-03-13 2 views 1 likes 
    1

    나는 데이터베이스 내에서 메시지를 출력하는 스크립트를 가지고있다.foreach 루프 PHP 밖으로 벗어나는

    각 메시지는 다른 사용자가 작성합니다.

    메시지 작성자와 친구 인 사용자 만 메시지를 볼 수 있습니다.

    내가 가진 스크립트입니다 :

    foreach($updatesarray as $data) 
    { 
    $qu=mysql_query("SELECT frid FROM friends WHERE usid='$uid'")or die(mysql_error()); 
    $dataq=array(); 
    $qurow=mysql_fetch_array($qu); 
    $dataq[]=$qurow['frid']; 
    foreach($dataq as $value){ 
        if($value!=$data['uid_fk']) 
        continue; 
    } 
    
    /Continues the output of the message 
    

    첫 번째 foreach 문은 MySQL의 쿼리 배열의 데이터를합니다. 그 foreach 내에서 다른 mysql 쿼리를 수행하여 현재 로그인 한 사용자의 친구 목록을 확인합니다. 결과를 배열에 넣고 새로운 foreach를 만듭니다. 어떤 루프가 이 아니라면이 사용자가 될 것이라고 판단하면 계속됩니다 ... 그러나 내가 계속하고 싶습니다. 두 번째 foreach를 계속하는 대신 메시지의 전체 출력을 건너 뛰도록해야합니다.

    변수 $ data [ 'uid_fk']는 데이터베이스에 저장된 메시지 작성자입니다.

    데이터베이스 쿼리 -> 출력에게 메시지를하지 마십시오 continue,이 플래그가 설정되어있는 경우이 때

    if($viewtype=="friends"){ 
         $viewquery="M.uid_fk=U.uid"; 
         $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created,  U.username, U.firstname, U.middlename, U.surname, M.uploads FROM messages M, users U WHERE  $viewquery $morequery order by M.msg_id desc limit " .$this->perpage) or  die(mysql_error()); 
    
         } 
    
    +0

    PHP로 필터링해야하는 모든 업데이트 대신 친구의 업데이트 만 반환하도록 이미 쿼리로 해결하는 것이 좋습니다. – hakre

    +2

    이걸 바로 잡자. 당신은 두 번째 루프에서 탈출해야합니까? 만약 당신이 그것에서 벗어날 필요가 있다면, 키워드'break'를 사용하십시오. 나는 열렬히하려고 노력하지 않고있다, 나는 그것을 읽는 것을 놓칠지도 모른다. – Michael

    +0

    미안 해요, 그런 식으로 깨지 말고, 현재 루프를 "건너 뛰고"나머지 foreach 루프를 계속해야합니다. hakre, 쿼리를 통해이를 수행하는 방법을 알 수 없으므로 잠시 후에 쿼리 코드를 추가 할 것입니다. 나는 시도했다. –

    답변

    3

    쿼리에서 메시지 및 친구 테이블에 가입해야하며 한 번에 둘 다 있습니다.

    +0

    이전에이 작업을 시도했지만 friend 테이블에서 배열을 가져 와서 메시지 쿼리에 사용하는 방법을 알아낼 수 없었습니다. 예를 들어 사용자의 친구가 1000 명인 경우 어떻게됩니까? –

    +0

    고마워, 나는 이것을 알아낼 수 있었고 효과가 있었다. –

    1

    는 플래그를 설정합니다.

    +0

    플래그를 설정할 때 무슨 뜻인지는 모르겠습니다. 이 점에 관해 좀 더 조언을 해줄 수 있습니까? 감사합니다. –

    +0

    변수를 나중에 확인할 값으로 설정하십시오. 어떤 PHP 책을 사용하고 있습니까? –

    +0

    @ LightnessRacesinOrbit - 나는 지난 8 년 동안 계속 진행되어 왔기 때문에 평생 동안 PHP 책을 사용하지 않았습니다. –

    1

    하는 첫 번째 루프를 건너이 시도 : 중첩 된 루프의 계속

    continue 2;

    2 매개 변수 컨트롤을.

    +0

    yikes .. 나는 PHP에서 가지고 있던 goto 컨트롤의 양을 몰랐습니다. – Michael

    +0

    나는 방금 시도했지만 사용자가 직접 만든 메시지를 포함하여 많은 메시지가 누락되었습니다. –

    +0

    @ 마이클 : 왜 그게? 이 기능은 http://php.net/manual/en/control-structures.continue.php –

    관련 문제