배열이 비어 있는 경우 포어치를 건너뛸 수 있는 가장 깨끗한 방법(배열)

큰 문제는 아니지만 좀 더 깔끔한 방법이 없을까 해서요.불필요한 if 문장으로 코드를 중첩하지 않는 것이 좋습니다.한다면$itemsis empty php는 오류를 발생시킵니다.

$items = array('a','b','c');
if(!empty($items)) { // <-Remove this if statement
foreach($items as $item) {
print $item;
} } 

@’ 오류억제기를 사용하면 될 것 같은데, 그건 좀 해킹이 될 것 같아요.



질문에 대한 답변



이것을 하는 방법은 백만 가지가 있다.

첫 번째 방법은 어레이가 있다고 가정하고 어레이를 foreach를 통해 실행하는 것입니다.

그 외의 경우는, 다음과 같은 것이 필요하게 됩니다.

foreach ((array) $items as $item) {
print $item; } 

주의: Typecast에 대해 불평하는 모든 사람들에게 OP는 어레이가 비어 있는 경우 포어치를 건너뛸있는 가장 깨끗한 방법을 물어본 것에 유의하십시오(강조합니다).true, false, number 또는 string 값은 비어 있는 것으로 간주되지 않습니다.게다가 이것은, 실장하고 있는 오브젝트에서도 동작합니다.Traversable,반면에.is_array안 먹혔어




가장 좋은 방법은 사용하기 전에 모든 블러디 변수를 초기화하는 것입니다.
그것은 이 바보 같은 “문제”를 해결할 뿐만 아니라 여러분의 진짜 두통을 많이 덜어줄 것입니다.

즉, $items는$items = array();네가 정말 원했던 거야




$items = array('a','b','c');
if(is_array($items)) {
foreach($items as $item) {
print $item;
} } 



필요한 변수가 있는 경우boolean false– 예를 들어 데이터베이스에서 레코드가 반환되지 않거나array레코드가 반환되면 다음을 수행할 수 있습니다.

foreach (($result ? $result : array()) as $item)
echo $item; 

캐스트에 의한 어프로치((Array)$result)는 변수가 다음과 같은 경우 카운트1의 배열을 생성합니다.boolean false아마 당신이 원하는 건 아닐 거예요




경고 출력을 억제하는 것은 권장하지 않습니다.단, 이 기능을 사용하는 것이 좋습니다.is_array대신!empty.한다면$items0이 아닌 스칼라일 경우,foreach를 사용하면 에러가 발생합니다.!empty.