배열이 비어 있는지 확인
이 질문에는 이미 답변이 있습니다.
다음 코드가 있습니다
<?php
$error = array();
$error['something'] = false;
$error['somethingelse'] = false;
if (!empty($error))
{
echo 'Error';
}
else
{
echo 'No errors';
}
?>
그러나 아무것도 설정되지 않은 경우에도 empty($error)
여전히을 반환합니다 true
.
옳지 않은 것은 무엇입니까?
배열에는 두 가지 요소가 있으며 이것이 배열이 비어 있음을 의미하지는 않습니다. 빠른 해결 방법으로 다음을 수행 할 수 있습니다.
$errors = array_filter($errors);
if (!empty($errors)) {
}
array_filter()
함수의 기본 동작은 배열 null
에서 0
, ''
또는 같은 모든 값을 제거합니다 false
.
그렇지 않으면 "빈"값을 가진 요소가 하나 이상있는 경우 특정 경우에 empty()
구문이 항상 반환 true
됩니다.
수행하여 확인할 수도 있습니다.
if(count($array) > 0)
{
echo 'Error';
}
else
{
echo 'No Error';
}
요소 sizeof
가 0
없는 경우 크기를 확인하십시오 .
PHP의 내장 empty () 함수는 변수가 비어 있는지, null인지, false인지 또는 0으로 표시되는지 확인합니다. 배열 항목과 관련된 값이 false이기 때문에 true를 반환하지 않습니다.이 경우 배열에 실제 요소가 있으며 평가 된 모든 것입니다.
연관 배열에서 특정 오류 조건이 true 로 설정되어 있는지 확인 하려면 array_keys () 함수를 사용하여 값이 true로 설정된 키를 필터링 할 수 있습니다 .
$set_errors = array_keys( $errors, true );
그런 다음 empty () 함수를 사용하여이 배열이 비어 있는지 확인하고 동시에 오류가 있는지 여부와 발생한 오류를 알려줍니다.
요소가 0 인 배열은 false로 변환됩니다.
http://php.net/manual/en/language.types.boolean.php
그러나 아무것도 설정되지 않은 경우에도 empty ($ error)는 여전히 true를 반환합니다.
그것은 empty()
작동 하지 않습니다 . manual 에 따르면 빈 배열에서만 true를 반환합니다 . 다른 것은 말이되지 않습니다.
PHP 문서에서 :
var에 비어 있지 않고 0이 아닌 값이 있으면 FALSE를 반환합니다.
다음은 비어있는 것으로 간주됩니다.
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)
함수 empty()
는 빈 배열을 테스트하는 데 작동하지 않습니다! 예:
$a=array("","");
if(empty($a)) echo "empty";
else echo "not empty"; //this case is true
기능이 필요합니다 :
function is_array_empty($a){
foreach($a as $elm)
if(!empty($elm)) return false;
return true;
}
좋아, 이것은 매우 오래된 질문입니다 :),하지만이 스레드가 솔루션을 검색하는 것을 발견했으며 좋은 것을 찾지 못했습니다.
안녕 (내 영어 죄송합니다)
hi 배열은 하나의 객체이므로 null 유형이거나 공백입니다.
<?php
if($error!=null)
echo "array is blank or null or not array";
//OR
if(!empty($error))
echo "array is blank or null or not array";
//OR
if(is_array($error))
echo "array is blank or null or not array";
?>
나는 그것을 복제 할 수 없다 (php 5.3.6) :
php > $error = array();
php > $error['something'] = false;
php > $error['somethingelse'] = false;
php > var_dump(empty($error));
bool(false)
php > $error = array();
php > var_dump(empty($error));
bool(true)
php >
empty()
true를 반환 하는 호출을 정확히 어디서 수행하고 있습니까?
<?php
if(empty($myarray))
echo"true";
else
echo "false";
?>
PHP에서, 배열 내의 개별 아이템이나 객체의 속성이 비어 있더라도, empty($subject)
함수를 사용하여 배열이나 객체는 비어있는 것으로 평가되지 않습니다 . 다시 말해서 개별적으로 "비어있는"것으로 테스트하는 많은 데이터를 함께 묶으면 비어 있지 않은 복합이 만들어집니다. 다음 PHP 함수를 사용하여 배열의 항목이나 객체의 속성이 비어 있는지 확인하십시오.
function functionallyEmpty($o)
{
if (empty($o)) return true;
else if (is_numeric($o)) return false;
else if (is_string($o)) return !strlen(trim($o));
else if (is_object($o)) return functionallyEmpty((array)$o);
// If it's an array!
foreach($o as $element)
if (functionallyEmpty($element)) continue;
else return false;
// all good.
return true;
}
사용법 예 :
$subject = array('', '', '');
empty($subject); // returns false
functionallyEmpty($subject); // returns true
class $Subject {
a => '',
b => array()
}
$theSubject = new Subject();
empty($theSubject); // returns false
functionallyEmpty($theSubject); // returns true
참고 URL : https://stackoverflow.com/questions/8328983/check-whether-an-array-is-empty
'Programing' 카테고리의 다른 글
PostgreSQL GROUP_CONCAT에 해당합니까? (0) | 2020.04.15 |
---|---|
.NET을 사용하면 확장자가 아닌 파일 서명을 기반으로 파일의 MIME 유형을 찾는 방법 (0) | 2020.04.15 |
활동간에 데이터를 공유하는 가장 좋은 방법은 무엇입니까? (0) | 2020.04.15 |
변수 이름이 종종 문자 'm'으로 시작하는 이유는 무엇입니까? (0) | 2020.04.15 |
문자열 구분 기호로 문자열을 어떻게 나눌 수 있습니까? (0) | 2020.04.15 |