mysql 결과에 대해 각 ()에 해당하는 경우, foreach ()의 첫 번째 루프를 모방합니다.

StackOverflow https://stackoverflow.com/questions/1290303

  •  18-09-2019
  •  | 
  •  

문제

내가 작업중 인 코드에서 다음을 보았습니다.

foreach( $mysql_result as $row ) $site_id = $row->id;

$ mysql_result는 물론 mysql_result이므로,이 foreach는 시간과 동일합니다 (mysql_fetch_row ())

때로는 결과가 한 줄만 생성하는 것으로 알려져 있지만 코드에는 여전히 "Foreach"가있어서 인상을줍니다 많은 행을 통한 루프

각 ()를 사용하려고 시도했지만 이것에 대해서는 작동하지 않습니다.

mysql_fetch_row ()를 사용할 수 있다는 것을 알고 있지만 코드는 DB 독립적이어야하므로 DB 특정 함수를 사용할 수 없습니다. 이 경우 oreach ()의 첫 번째 반복과 마찬가지로 작동하는 각 ()과 같은 것이 있습니까?

추신 : 현재 가독성을 위해 내가하는 일은 이전 예를 바꾸는 것입니다.

foreach( $mysql_result as $row ) break;
$site_id = $row->id;

따라서 Foreach가 최대 한 번만 루프 할 것이라는 것은 분명합니다.

도움이 되었습니까?

해결책

나는 당신이 원하는 것이 다음 대신이라고 생각합니다.

foreach( $mysql_result as $row ) $site_id = $row->id;

딱 이것:

$site_id = $mysql_result[0]->id;

다른 팁

추신 : 현재 가독성을 위해 내가하는 일은 이전 예를 바꾸는 것입니다.

foreach ($ mysql_result as $ row) 브레이크;

함수로 랩하여 하나의 행을 얻는다는 것이 분명합니다 (그리고 여전히 DB Independent).

function fetch_single_row($result) 
{
  foreach( $mysql_result as $row ) break;
  return $row;
}

그러면 코드가 모양이 될 것입니다

$row = fetch_single_row($mysql_result);
$site_id = $row->id;

이제 당신은 모든 이상한 foreach (..) 휴식에 대해 궁금해 할 필요가 없습니다. 코드 전체에 진술.

하나의 결과 만 원한다면 루프 할 필요가 없습니다.

$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
$site_id = $row['id'];

당신은 do 루프를 사용해야합니다

$i =0
do {
    $site_id = $mysql_result[$i++]->id;
} while ($i <= 0);

이것이 당신이 원하는 것입니까?

if ( 1 == count( $mysql_result ) )
{
  $row = current( $mysql_result );

  // could probably also do this unless the array isn't zero-indexed
  // $row = $mysql_result[0];
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top