큰 문제는 아니지만 좀 더 깔끔한 방법이 없을까 해서요.불필요한 if 문장으로 코드를 중첩하지 않는 것이 좋습니다.한다면$items
is 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
.한다면$items
0이 아닌 스칼라일 경우,foreach
를 사용하면 에러가 발생합니다.!empty
.