배열 $arr
안에있는 모든 요소를 검사하기 위해 all
이라는 함수를 작성하고 boolean
값 (반환 값은 $f
기준)을 반환합니다. 이것은 잘 동작하는 사용자 정의 함수 (코드 $gte0
all
로 전달 된 참조).PHP는 true() 함수가 있습니까?
그러나 때로는 하나는 배열의 모든 true
값이 포함되어 있는지 확인합니다 : all(true, $arr)
이 true
이 boolean
로 전달 (그리고 true
함수 이름이 아닙니다)입니다 becase 작동하지 않습니다. PHP는 함수처럼 native true()
을 가지고 있습니까?
function all($f, array $arr)
{
return empty($arr) ? false : array_reduce($arr, function($v1, $v2) use ($f) {
return $f($v1) && $f($v2);
}, true);
}
$test = array(1, 6, 2);
$gte0 = function($v) { return $v >= 0; }
var_dump(all($gte0, $test)); // True
$test = array(true, true, false);
$id = function($v) { return $v; } // <-- this is what i would avoid
var_dump(all($id, $test)); // False
all(true, $test); // NOT WORKING because true is passed as boolean
all('true', $test); // NOT WORKING because true is not a function
편집 : 또 다른 방법은 all
기능에 $f
을 확인 할 수 있습니다 :
$f = is_bool($f) ? ($f ? function($v) { return $v; }
: function($v) { return !$v; }): $f;
을 true
와 all
완벽하게 괜찮 호출이를 추가 한 후.
이것은 IMO라는 코드를 작성하는 데 오해의 소지가 있습니다. 특히 코드의 두 번째 부분은 올바른 흐름을 이해하기가 꽤 어렵습니다. – dynamic
@ yes123 주석 끝 부분에 IMHO를 추가해야합니다. – gremo
@Gremo : 의견은 항상 선언적이며 의견을 말하지 않으려 고합니다. 그렇기 때문에 코멘트라고 부릅니다.) – hakre