PHP에서 배열 변환 최적화
문자열로 무언가를 하기 위해 항상 문자열을 배열로 분할할 필요는 없습니다.
예제를 살펴보겠습니다.
다음 예제에서 코드 작성자는 문자열에 숫자 3이
있는지 확인합니다:
<?php
$str = '12345';
$arr = explode('', $str); // 배열로 분할
if (in_array(3, $arr)) {
echo '있음';
} else {
echo '없음';
}
?>
작성자는 훌륭합니다 - 자체적으로 비효율적인 코드를 작성하기보다 PHP 내장 함수를 사용합니다.
하지만 코드는 여전히 최적이 아닙니다: 문자열 내 검색을 수행하는
준비된 함수 strpos가 존재하기 때문에
여기서는 문자열을 배열로 분할할 필요가 없습니다:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo '있음';
} else {
echo '없음';
}
?>
여기서 배열로 분할하는 것이 나쁜 이유는 무엇일까요? 왜냐하면 첫째, 배열로 분할하는 데 CPU 리소스가 소비되고, 둘째, 생성된 배열이 RAM 공간을 차지하기 때문입니다 (게다가 그 공간은 원래 문자열이 차지하는 공간보다 클 것입니다).
교훈: 다른 방법이 있다면 문자열을 배열로 분할하지 마십시오.
다음 코드에서 어떤 프로그래머가 문자열의 문자 순서를 거꾸로 뒤집습니다. 이 프로그래머의 솔루션을 최적화하세요:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // '54321' 출력
?>
다음 코드에서 어떤 프로그래머가 텍스트의 단어 수를 찾고 있습니다. 이 프로그래머의 솔루션을 최적화하세요:
<?php
$str = 'aaa bbb ccc'; // 긴 문자열
echo count(explode(' ', $str));
?>