PHP 배열 을 옮 겨 다 니 는 세 가지 방법 및 효율 비교 분석

4095 단어 PHP두루배열
본 논문 의 사례 는 PHP 가 배열 을 옮 겨 다 니 는 세 가지 방법 과 효율 대 비 를 분석 했다.모두 에 게 참고 하도록 공유 하 다.구체 적 인 분석 은 다음 과 같다.
오늘 어떤 친구 가 나 에 게 phop 이 배열 을 옮 겨 다 니 는 방법 에 대해 몇 가 지 를 알려 주 었 다.가 는 김 에 문장 을 써 서 정리 해 보 세 요.만약 총 결 이 완전 하지 않 으 면 여러분 께 지적 해 주세요.
첫째,foreach()
foreach()는 배열 의 데 이 터 를 옮 겨 다 니 는 가장 간단 하고 효과 적 인 방법 이다.

<?php 
    $urls= array('aaa','bbb','ccc','ddd');
    foreach ($urls as $url){ 
      echo "This Site url is $url! <br />";
    } 
?>
결과 보이 기:

This Site url is aaa 
This Site url is bbb 
This Site url is ccc 
This Site url is ddd

둘째,while()와 list(),each()가 함께 사용 합 니 다.

<?php 
    $urls= array('aaa','bbb','ccc','ddd'); 
    while(list($key,$val)= each($urls)) { 
      echo "This Site url is $val.<br />"; 
    } 
?> 

결과 보이 기:

This Site url is aaa
This Site url is bbb
This Site url is ccc
This Site url is ddd

세 번 째,for()는 배열 을 옮 겨 다 니 기 위해 사용 합 니 다.

<?php 
    $urls= array('aaa','bbb','ccc','ddd'); 
    for ($i= 0;$i< count($urls); $i++){ 
      $str= $urls[$i]; 
      echo "This Site url is $str.<br />"; 
    } 
?>
결과 보이 기:

This Site url is aaa 
This Site url is bbb 
This Site url is ccc 
This Site url is ddd 

어떤 사람 도 이 몇 가지 배열 을 옮 겨 다 니 는 방법 중 어느 것 이 더 빠 른 지 물 어보 고 있 습 니 다.다음은 간단 한 테스트 를 하면 알 수 있 습 니 다.
세 가지 배열 을 옮 겨 다 니 는 속 도 를 측정 해 보 겠 습 니 다.
일반적인 상황 에서 한 배열 을 옮 겨 다 니 는 세 가지 방법 이 있 습 니 다.for,while,foreach.그 중에서 가장 간단 하고 편리 한 것 은 foreach 이다.다음은 50000 개의 아래 표 시 된 1 차원 배열 을 함께 옮 겨 다 니 는 데 걸 리 는 시간 을 테스트 해 보 자.

<?php 
  $arr= array(); 
  for($i= 0; $i< 50000; $i++){ 
  $arr[]= $i*rand(1000,9999); 
  } 
  function GetRunTime() 
  { 
  list($usec,$sec)=explode(" ",microtime()); 
  return ((float)$usec+(float)$sec); 
  } 
  ###################################### 
  $time_start= GetRunTime(); 
  for($i= 0; $i< count($arr); $i++){ 
  $str= $arr[$i]; 
  } 
  $time_end= GetRunTime(); 
  $time_used= $time_end- $time_start; 
  echo 'Used time of for:'.round($time_used, 7).'(s)<br /><br />'; 
  unset($str, $time_start, $time_end, $time_used); 
  ###################################### 
  $time_start= GetRunTime(); 
  while(list($key, $val)= each($arr)){ 
  $str= $val; 
  } 
  $time_end= GetRunTime(); 
  $time_used= $time_end- $time_start; 
  echo 'Used time of while:'.round($time_used, 7).'(s)<br /><br />'; 
  unset($str, $key, $val, $time_start, $time_end, $time_used); 
  ###################################### 
  $time_start= GetRunTime(); 
  foreach($arr as$key=> $val){ 
  $str= $val; 
  } 
  $time_end= GetRunTime(); 
  $time_used= $time_end- $time_start; 
  echo 'Used time of foreach:'.round($time_used, 7).'(s)<br /><br />'; 
?>

테스트 결과:

Used time of for:0.0228429(s) 
Used time of while:0.0544658(s) 
Used time of foreach:0.0085628(s)
반복 적 인 테스트 를 통 해 같은 배열 을 옮 겨 다 니 는 것 에 대해 foreach 속도 가 가장 빠 르 고 가장 느 린 것 은 while 인 것 으로 나 타 났 다.원리 적 으로 볼 때 foreach 는 배열 복사 본 을 조작 하 는 것(배열 복사)이 고,while 는 모 바 일 배열 내부 지 표를 통 해 조작 하 는 것 이다.일반적으로 논리 적 으로 while 는 foreach 보다 빨 라 야 한다 고 생각한다.(foreach 가 실행 을 시작 할 때 먼저 배열 을 복사 하고 while 은 내부 지 표를 직접 이동 하기 때문이다.)하지만 결 과 는 정반 대 였 다.왜냐하면 foreach 는 PHP 내부 에서 이 루어 지 는 것 이 고 while 는 통용 되 는 순환 구조 이기 때문이다.그래서 일반적인 응용 에서 foreach 는 간단 하고 효율 이 높다.PHP 5 에서 foreach 는 클래스 의 속성 을 옮 겨 다 닐 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 phop 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기