2017-04-23 5 views

답변

2

ALERT 시도가 다른 구현으로 이동 intersect() 방법을 사용 중지, 그것은 Laravel의 향후 버전에서 제거됩니다 : Link

당신이 is_read 키가 최종 배열에서 누락 된 것을 의미하는 경우 (그리고 전체 배열은 비어 있지 않습니다. 내 의견을보십시오.) 이것은 intersect() 메소드의 구현 때문입니다.

intersect 메서드는 Illuminate\Http\Request 클래스의 only() 메서드를 단순히 래핑하고 그 결과로 array_filter을 수행합니다. $results

입니다

1 단계이 시점에서

$results = $request->only('message','name','email','is_read'); 

:

귀하의 경우
/** 
* Intersect an array of items with the input data. 
* 
* @param array|mixed $keys 
* @return array 
*/ 
public function intersect($keys) 
{ 
    return array_filter($this->only(is_array($keys) ? $keys : func_get_args())); 
} 

, 우리는이 같은 코드를 분해 할 수

는 구현
Array 
(
    [message] => message 
    [name] => name 
    [email] => email 
    [is_read] => 0 
) 

그러나, 2 단계

2 단계에서

$filteredResults = array_filter($results); 

결과는

Array 
(
    [message] => message 
    [name] => name 
    [email] => email 
) 

이되고이 때문에 방법 array_filter 작품이다. 첫 번째 매개 변수로 배열을 기대하고 선택적 콜백 (배열을 필터링하는 데 사용됨) 및 플래그를 기대합니다. php reference

가입일

란 콜백이 제공되지 않을 때 일어난다 (이 경우처럼?)

를 콜백이 제공되지 않으면 (converting to boolean 참조) FALSE 동일한 어레이의 모든 엔트리들은 제거 될 .

링크 converting to boolean을 보면 0 (영)이 FALSE로 간주되어 어레이에서 제거 된 것을 알 수 있습니다.

+0

자세한 설명 주셔서 감사합니다. 이제 코드가 0으로 바뀌 었습니다. 문자열로 false를 반환 한 다음 그 값을 부울 false로 변환하면 작동합니다. – user3844579

관련 문제