php의 end () 배열 함수 결과를 결과에서 작동 할 변수에 할당 해야하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1633301

  •  06-07-2019
  •  | 
  •  

문제

다음과 같이 배열의 마지막으로 비어있는 마지막 항목을 삭제하려고했지만 "쓰기 컨텍스트에서 기능 반환 값을 사용할 수 없습니다": 오류가 발생합니다.

  if (empty(end($crontabEntryList))) {
    array_pop($crontabEntryList);
  }

먼저 끝의 리턴 값을 변수에 (하단에서) 할당하면 비어있는 경우 마지막 항목을 삭제할 수 있습니다. 당 end ()의 수동 항목 "빈 배열의 경우 마지막 요소 또는 false의 값을 반환합니다." 인터넷 검색을 통해 내가 찾았습니다 가능한 설명: 부울은 "쓰기 가능"하지 않습니다.

그러나이 오류가 내 특정 맥락에서 반환되는 것 같습니다. 다른 사람들은 여기에 문서화되었습니다, 단지 그 이유 때문입니다 가능한 부울이 반환 될 수 있습니다. 내 인스턴스의 배열은 결정적으로 그랬기 때문입니다 ~ 아니다 비어 있고, 따라서 거짓이 아닌 end ()는 "마지막 요소의 값을 반환합니다".

내 가정이 맞습니까? 어떤 경우, 이것은 PHP의 느슨하게 입력 된 특성과 일치하지 않습니까? 아니면 배열의 마지막 요소가 "쓰기가 불가능"하기 때문입니까? 어떤 경우, PHP에서 "쓰기 컨텍스트"를 정확하게 구성하는 것은 무엇입니까?

  $last = end($crontabEntryList);
  if (empty($last)) {
    array_pop($crontabEntryList);
  }
도움이 되었습니까?

해결책

이것은 부울의 end () 또는 "쓰기 성"과 관련이 없습니다.

empty() 그리고 isset() 기능이 아니며 언어 구성입니다.

에서 문서 empty():

참고 : 빈 ()은 변수 만 확인하면 다른 내용이 구문 분석 오류가 발생합니다. 다시 말해, 다음은 작동하지 않습니다 : empty (trim ($ name)).

다시: 변수를 전달할 수 있습니다 empty().

다른 팁

빈 ()은 그렇게 이상합니다. 방금 그것을 받아들이고 가능한 경우 (제공 한 솔루션과 함께) 작업하는 법을 배웠습니다.

배열에서 빈 값을 지우려고한다면 시도해보십시오. Array_Filter ()

end ()의 반환 값에 음성 검사를 사용하는 것이 좋습니다. 내가 알 수 있듯이 end ()는 마지막 요소의 값을 반환하거나 비어있는 경우 false를 반환합니다. 따라서 추가 코드를 사용하여 비어있는 다른 변수를 작성하는 대신 end ()의 리턴을 테스트합니다.

/* Edited */
if(!(trim(end($crontabEntryList)))) {
   array_pop($crontabEntryList);
}

나는 다양한 문자열로 내 시스템에서 이것을 테스트했으며 원하는 효과가있는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top