특정 문자가 배열에 포함되어 있는지 확인하는 방법은 여러 가지가 있습니다. PHP를 처음 배운 초보자는 문제를 해결하기 위해 루프를 사용하는 것을 선호할 수 있습니다. 이 솔루션은 큰 문제를 일으키지 않습니다. . 그러나 성능 측면에서 이 방법은 최선의 방법은 아닙니다. 아래에서 저자는 foreach 및 in_array() array_search 세 가지 방법의 성능 차이를 비교해 보겠습니다.
<?php $runtime= new runtime; $runtime->start(); $a = 'k'; $b = array('a','b','c','d','e','f','g','h','i','j','k'); /* for ($i=0; $i < 100000; $i++) { var_dump(in_array($a, $b)); } */ /* for ($i=0; $i < 100000; $i++) { foreach ($b as $key => $value) { if ($a == $value) { //echo TRUE; continue; } } } */ /* for ($i=0; $i < 100000; $i++) { array_search($a, $b); } */ $runtime->stop(); echo $_b; echo "执行时间: ".$runtime->spent()." 毫秒"; class runtime{ var $StartTime = 0; var $StopTime = 0; function get_microtime(){ list($usec, $sec) = explode(' ', microtime()); return ((float)$usec + (float)$sec); } function start(){ $this->StartTime = $this->get_microtime(); } function stop(){ $this->StopTime = $this->get_microtime(); } function spent(){ return round(($this->StopTime - $this->StartTime) * 1000, 1); } } ?>
위 프로그램의 실행시간은 아래 그림과 같습니다.
in_array()
foreach
array_search()
위에서 이 세 가지 방법의 성능을 대략적으로 볼 수 있습니다. array_search와 in_array는 거의 동일한 성능을 발휘하며 foreach는 성능이 가장 나쁩니다.