나는 or
이 들어간 if
성명을 가지고 있습니다.이 간단한 IF 또는 OR 문을 수행하는 방법입니까?
즉
if($count == 1 || $count == 3 || $count == 7) {
// do stuff
}
난 그냥 궁금 해서요 -이이 작업을 수행하는 가장 좋은 방법입니다? 위의 간단한 예제를 통해이 작업을 수행하는 더 빠른 방법이 있습니까? 그렇다면 무엇입니까?
나는 or
이 들어간 if
성명을 가지고 있습니다.이 간단한 IF 또는 OR 문을 수행하는 방법입니까?
즉
if($count == 1 || $count == 3 || $count == 7) {
// do stuff
}
난 그냥 궁금 해서요 -이이 작업을 수행하는 가장 좋은 방법입니다? 위의 간단한 예제를 통해이 작업을 수행하는 더 빠른 방법이 있습니까? 그렇다면 무엇입니까?
코드가 올바르게 작동합니다. 또는, 당신은 비트 깨끗하고 확장 in_array()을 사용할 수 있습니다 더 나은 :
if (in_array($count, array(1,3,7))) { ... }
사실, 이것은 원래 예제보다 약 4 배 느립니다 ... 내 서버에서 116ms vs 449ms가 백만 번 실행되는 것을 허용했습니다 ... 훨씬 깨끗하고 읽기 쉽습니다. 적은 양의 데이터 만 있으면 속도는 무시할 수 있습니다. 큰 일로 - in_array 성능이 매우 느립니다. – Sergey
@ Sergey 글쎄, 그런 경우에는 큰 배열을 만난 적이없는 것 같은가요? –
당신이 거기에 백만 가지의 물건을 붙이면, 당신은 그것을 잘못하고 있습니다. –
당신은 배열의 가능한 모든 값을 할당하고 array_search 기능
$array=array(1,3,7);
if (array_search($count,$array) !== FALSE)
{
//do stuff
}
당신이 작성한 코드를 사용하여 확인할 수 있습니다 괜찮습니다. 폴 슈라이버 (Paul Schreiber)가 말했듯이, 조금 깔끔한 다양한 옵션이 있습니다.
당신이 생각해 볼 수도있는 한 가지는 (그리고 이것은 단지 예일뿐입니다) 검사하는 값이 중요한 이유입니다. 그들은 모두 당신이 확인하고있는 공통점이 있습니까? 그렇다면 속성을 상징적으로 말하면 누군가가 이해하기 쉽게 코드를 작성할 수 있습니다. 예를 들어 :
if (is_odd($x) && $x < 10) {
//...
}
오히려
if ($x == 1 || $x == 3 || $x == 5 || $x == 7 || $x == 9) {
//...
}
이상이 꽤 인위적인 예입니다, 그러나 희망 당신은 나가에 얻고 무엇을 참조하십시오. 좀 더 구체적인 예를 들어
, 대신 같은 일을의 :이 수,
if (eligible_for_discount($user, $num_items)) {
// Give this user a discount
}
당신 만이 한 곳에서 함수를 사용하는 경우에도 :
if ($user->age > 65
|| $user->years_of_custom > 3
|| $num_items > 5) {
// Give this user a discount ....
}
당신이 수행 할 수 있습니다 코드의 가독성을 높입니다. 분명히 당신은 당신의 판단을 사용해야 만합니다. 왜냐하면 당신은 유지 보수 할 코드가 많아지기 때문에 가독성을 높이기 때문입니다. 그리고 항상 올바른 선택이되는 것은 아닙니다. 조건이 서로별로 관련이 없다면, 별도의 함수로 바인딩하면 이해가되지 않을 것이고 코드를 더 쉽게 따르지 않게 될 것입니다. 코드가 실제로 의미하는 것, 그리고 인간이 그것을 이해하는 방법에 중점을 두십시오.
+ 잘 생각해 보면 – codercake
고맙습니다. 나는 is_odd 함수가 있는지 몰랐다. – willdanceforfun
더 빠른 방법을 요청하면이 코드와 관련된 성능 문제가 있습니까? –
동일한 성능을 얻을 수있는 지름길이 있는지 궁금해하는 성능 문제가 없습니다. 거기에 10 또는 진술이있을 때 약간 길고 반복적 일 수 있습니다. – willdanceforfun