Programing

배열이 비어 있는지 확인

lottogame 2020. 4. 15. 10:23
반응형

배열이 비어 있는지 확인


이 질문에는 이미 답변이 있습니다.

다음 코드가 있습니다

<?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';
}

요소 sizeof0없는 경우 크기를 확인하십시오 .


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


반응형