2013-02-21 5 views
0

루프에 foreach 루프가 거의 없습니다.foreach 구조체

내 아래 코드에서 foreach 있습니다 : 줄 번호 (3)에서

foreach ($myrows as $rows){ 
    $option = $rows->option_value; 
    $option_value = recursive_unserialize_replace($site_url,$_POST['url_name'],$option); 
    $sql.= '('."'".$rows->option_name."'".','."'".$option_value."'".','."'".$rows->autoload."'".')'.","; 
} 

봐 내가 인쇄하는 데 사용 쉼표있다. 이제 마지막 줄에 쉼표를 인쇄하고 싶지 않습니다.

+5

그래서 그 공동에서 쉼표를 제거하십시오 드? – sevenseacat

+0

제 질문을받지 못하셨습니까? 각하는 출력물의 모든 줄에 쉼표를 넣고 싶습니다. 단지 내 출력의 마지막 라인에 싶지 않아. – Ranjit

답변

9

이 시도 :

$array = array(); 

foreach ($myrows as $rows){ 
    $option = $rows->option_value; 
    $option_value = recursive_unserialize_replace($site_url,$_POST['url_name'],$option); 
    $array[] = '('."'".$rows->option_name."'".','."'".$option_value."'".','."'".$rows->autoload."'".')'; 
} 

$sql = join(', ', $array); 
+1

'+ 1' 심지어 이것은 좋은 기술입니다. –

0

그냥 마지막에 이렇게 :

$sql = substr($sql, 0, strlen($sql)-1); 

이 마지막 쉼표를 인쇄되지 않습니다.

+0

어디에서 foreach 루프를 추가해야합니까? – Ranjit

+0

'foreach'다음에 추가해야합니다. –

1

를 루프 후에는 trim() 기능을 사용하여 쉼표를 후행 제거 할 수 있습니다 : 당신이 원하는 경우

$sql = trim($sql, ','); 
+0

마지막 쉼표 만 제거합니다. 죄송합니다. 마지막 쉼표 만 사용하십시오. – Ranjit

+0

예, 쉼표가 문자열의 시작 부분이나 끝 부분에있는 경우에만 모든 쉼표가 지워집니다. – madfriend

+1

* 선행 * 및 * 후행 * 쉼표가 제거됩니다. 이것은 둘 이상일 수 있지만, 문자열은 괄호로 시작하고 괄호와 쉼표로 끝나기 때문에 최종 쉼표 만 제거됩니다. – SDC

0

을 하나 개 더 적은 운영 및 메모리와 성능을보다 효율적으로 사용 당신은 또한 foreach의 포인터가 어디에 있는지 확인할 수 있습니다 :

foreach ($myrows as $rows){ 
    $option = $rows->option_value; 
    $option_value = recursive_unserialize_replace($site_url,$_POST['url_name'],$option); 
    if ($rows === end($myrows)){ 
     $sql.= "('{$rows->option_name}','{$option_value}','{$rows->autoload}')"; 
    }else{ 
     $sql.= "('{$rows->option_name}','{$option_value}','{$rows->autoload}'),"; 
    } 
}