programing

PHP를 사용하여 어레이가 비어 있는지 확인하는 방법

goodjava 2022. 11. 2. 00:28

PHP를 사용하여 어레이가 비어 있는지 확인하는 방법

players는 비어 있거나 쉼표로 구분된 목록(또는 단일 값) 중 하나입니다.비어 있는지 확인하는 가장 쉬운 방법은 무엇입니까?내가 그 물건을 가져오면 바로 그렇게 할 수 있을 것 같아$gameresult$gamerow, ?의 일 수 $playerlist만약 비어있다면 논의를 위해 어레이도 비어있는지 어떻게 확인할 수 있을까요?

$gamerow = mysql_fetch_array($gameresult);
$playerlist = explode(",", $gamerow['players']);

PHP의이 느슨하기 수또한 접근방식을 경우 자체를 사용할 .count():

if (!$playerlist) {
     // list is empty.
}
if (count($playerlist) === 0) {
     // list is empty.
}

에 빈 가 있는 으로 「」를 방지하기 ).explode다음 중 하나:

foreach ($playerlist as $key => $value) {
    if (!strlen($value)) {
       unset($playerlist[$key]);
    }
}
if (!$playerlist) {
   //empty array
}

falsey를 사용할 empty()남들이 제안했듯이

<?php
$playerList = array();
if (!$playerList) {
    echo "No players";
} else {
    echo "Explode stuff...";
}
// Output is: No players

PHP는 변수가 존재하지 않거나 falsey 값이 있는지 확인합니다(예:array(),0,null,false★★★

체크만 하면 .!$emptyVar을 사용하다empty($emptyVar)되지 않은 , 않는 E_NOTICE; 않은 생각이다 IMO를 사용하다

몇 가지 적절한 답변이지만, PHP가 어레이가 비어 있는지 여부를 판단할 때 좀 더 명확하게 설명하기 위해 조금 더 자세히 설명하겠습니다.


주요 주의사항:

키가 있는 배열은 PHP에 의해 비어 있지 않은 으로 판단됩니다.

어레이 값에는 키가 존재해야 하므로 어레이에 값이 있는지 여부에 따라 값이 비어 있는지 여부가 결정되지 않습니다.키가 없는지만(따라서 값이 없는 경우) 판단됩니다.

를 체크하고 .empty()는 단순히 값이 있는지 여부를 알려주는 것이 아니라 배열이 비어 있는지 여부와 키가 배열의 일부인지 여부를 알려줍니다.


따라서 어떤 검사 방법을 사용할지 결정하기 전에 어레이를 어떻게 만들고 있는지 고려하십시오.
EG 각 폼필드에 어레이명이 있는 경우 사용자가 HTML 폼을 송신할 때 어레이에 키가 있습니다.name="array[]"를 참조해 주세요.
각 폼 필드의 배열에 대해 키 값이 자동으로 증가하므로 각 필드에 대해 비어 있지 않은 배열이 생성됩니다.

예를 들어 다음과 같은 어레이가 있습니다.

/* Assigning some arrays */

// Array with user defined key and value
$ArrayOne = array("UserKeyA" => "UserValueA", "UserKeyB" => "UserValueB");

// Array with auto increment key and user defined value
// as a form field would return with user input
$ArrayTwo[] = "UserValue01";
$ArrayTwo[] = "UserValue02";

// Array with auto incremented key and no value
// as a form field would return without user input
$ArrayThree[] = '';
$ArrayThree[] = '';

상기 어레이의 어레이 키와 값을 에코아웃하면 다음과 같은 메시지가 나타납니다.

1 레: 1:
[UserKeyA] => [UserValueA]
[ ][ UserKeyB ] => [ UserValueB ]

2 레 2 2:
[ Value 01][0 ] => [ User Value 01 ]
[ Value 02 ][ 1 ] => [ User Value 02 ]

3 레 3 3:
=> 0] => [ ]
[1] => [ ]

를 한한 the the로 테스트합니다.empty()다음 합니다.

1 레: 1:
$은 $Array가 있지 하나

2 레 2 2:
$는 $Array가 있지 둘.

3 레 3 3:
.$Array세 번째입니다.

어레이를 할당할 때 어레이는 항상 비어 있지만 그 이후에는 사용하지 않습니다. 예를 들어 다음과 같습니다.

$ArrayFour = array();

. 즉, PHP는 시 합니다.이 경우 PHP는 TRUE를 반환합니다.empty()위에 기재되어 있습니다.

에 키가 하지 않는 함) 는 ""가 ."empty()

이 경우 각 키에 값이 있는지 테스트하기 위해 어레이를 포어치로 루프할 수 있습니다.이 방법은 키를 확인하거나 데이터를 삭제하거나 어레이를 실행해야 하는 경우에 적합합니다.

그러나 단순히 "값이 존재하는지"만 알고 있으면 TRUE 또는 FALSE가 반환되는 경우에는 이 방법을 사용하는 것이 좋습니다.어레이에 키가 있음을 알고 있을 때 어레이에 값이 있는지 여부를 확인하는 방법은 여러 가지가 있습니다.기능 또는 클래스가 최선의 접근 방식일 수도 있지만, 항상 그렇듯이 환경 및 정확한 요건과 어레이에서 현재 수행하는 작업(있는 경우) 등에 따라 달라집니다.


다음은 매우 적은 코드를 사용하여 어레이에 값이 있는지 확인하는 방법입니다.

「」를 사용합니다.array_filter():
배열 내의 각 값을 반복하여 콜백 함수에 전달합니다.콜백 함수가 true를 반환하면 배열의 현재 값이 결과 배열로 반환됩니다.어레이 키는 유지됩니다.

$EmptyTestArray = array_filter($ArrayOne);

if (!empty($EmptyTestArray))
  {
    // do some tests on the values in $ArrayOne
  }
else
  {
    // Likely not to need an else, 
    // but could return message to user "you entered nothing" etc etc
  }

.array_filter()의 첫 된) 결과가

1 레: 1:
은 빈 $arrayone이 .

2 레 2 2:
는 빈 $array2가 .

3 레 3 3:
은 빈 $array3입니다.

키가 없든 는 키를 합니다.array_filter()새 배열을 만들고 새 배열이 비어 있는지 확인하려면 원래 배열에 값이 있었는지 여부를 표시합니다.
이상적이지도 않고 조금 지저분하지만, 대규모 어레이를 가지고 있어 다른 이유로 루프를 할 필요가 없다면, 이것이 가장 간단한 코드입니다.


오버헤드를 체크하는 것은 익숙하지 않습니다만, 사용하는 방법의 차이점을 알아 두면 좋을 것 같습니다.array_filter() ★★★★★★★★★★★★★★★★★」foreach을 사용법

벤치마크는 다양한 파라미터, 소규모 어레이 및 대규모 어레이, 그리고 값이 있는지 여부 등에 대해 이루어져야 합니다.

count($gamerow['players']) 0이 됩니다.

포스트 말미에 포함된 벤치마크를 실행했습니다.방법을 비교하려면:

  • count($arr) == 0: " " "
  • empty($arr): empty: empty.
  • $arr == []: " " "
  • (bool) $arr : ★★★★

그리고 다음과 같은 결과를 얻었다.

Contents  \method |    count     |    empty     |     comp     |     cast     |
------------------|--------------|--------------|--------------|--------------|
            Empty |/* 1.213138 */|/* 1.070011 */|/* 1.628529 */|   1.051795   |
          Uniform |/* 1.206680 */|   1.047339   |/* 1.498836 */|/* 1.052737 */|
          Integer |/* 1.209668 */|/* 1.079858 */|/* 1.486134 */|   1.051138   |
           String |/* 1.242137 */|   1.049148   |/* 1.630259 */|/* 1.056610 */|
            Mixed |/* 1.229072 */|/* 1.068569 */|/* 1.473339 */|   1.064111   |
      Associative |/* 1.206311 */|   1.053642   |/* 1.480637 */|/* 1.137740 */|
------------------|--------------|--------------|--------------|--------------|
            Total |/* 7.307005 */|   6.368568   |/* 9.197733 */|/* 6.414131 */|

비어 있는 것과 부울에 캐스팅하는 것의 차이는 미미합니다.이 테스트를 여러 번 실행했는데 기본적으로 동일한 것으로 보입니다.어레이의 내용은 중요한 역할을 하지 않는 것 같습니다.이 둘은 정반대의 결과를 낳지만 논리적 부정은 캐스팅을 이기는 데 거의 충분치 않기 때문에 저는 개인적으로 어느 경우든 읽기 쉽도록 비어 있는 것을 선호합니다.

#!/usr/bin/php
<?php

//    012345678
$nt = 90000000;

$arr0 = [];
$arr1 = [];
$arr2 = [];
$arr3 = [];
$arr4 = [];
$arr5 = [];

for ($i = 0; $i < 500000; $i++) {
    $arr1[] = 0;
    $arr2[] = $i;
    $arr3[] = md5($i);
    $arr4[] = $i % 2 ? $i : md5($i);
    $arr5[md5($i)] = $i;
}

$t00 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    count($arr0) == 0;
}
$t01 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    empty($arr0);
}
$t02 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    $arr0 == [];
}
$t03 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    (bool) $arr0;
}
$t04 = microtime(true);

$t10 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    count($arr1) == 0;
}
$t11 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    empty($arr1);
}
$t12 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    $arr1 == [];
}
$t13 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    (bool) $arr1;
}
$t14 = microtime(true);

/* ------------------------------ */

$t20 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    count($arr2) == 0;
}
$t21 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    empty($arr2);
}
$t22 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    $arr2 == [];
}
$t23 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    (bool) $arr2;
}
$t24 = microtime(true);

/* ------------------------------ */

$t30 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    count($arr3) == 0;
}
$t31 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    empty($arr3);
}
$t32 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    $arr3 == [];
}
$t33 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    (bool) $arr3;
}
$t34 = microtime(true);

/* ------------------------------ */

$t40 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    count($arr4) == 0;
}
$t41 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    empty($arr4);
}
$t42 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    $arr4 == [];
}
$t43 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    (bool) $arr4;
}
$t44 = microtime(true);

/* ----------------------------------- */

$t50 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    count($arr5) == 0;
}
$t51 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    empty($arr5);
}
$t52 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    $arr5 == [];
}
$t53 = microtime(true);
for ($i = 0; $i < $nt; $i++) {
    (bool) $arr5;
}
$t54 = microtime(true);

/* ----------------------------------- */

$t60 = $t00 + $t10 + $t20 + $t30 + $t40 + $t50;
$t61 = $t01 + $t11 + $t21 + $t31 + $t41 + $t51;
$t62 = $t02 + $t12 + $t22 + $t32 + $t42 + $t52;
$t63 = $t03 + $t13 + $t23 + $t33 + $t43 + $t53;
$t64 = $t04 + $t14 + $t24 + $t34 + $t44 + $t54;

/* ----------------------------------- */

$ts0[1] = number_format(round($t01 - $t00, 6), 6);
$ts0[2] = number_format(round($t02 - $t01, 6), 6);
$ts0[3] = number_format(round($t03 - $t02, 6), 6);
$ts0[4] = number_format(round($t04 - $t03, 6), 6);

$min_idx = array_keys($ts0, min($ts0))[0];
foreach ($ts0 as $idx => $val) {
    if ($idx == $min_idx) {
        $ts0[$idx] = "   $val   ";
    } else {
        $ts0[$idx] = "/* $val */";
    }

}

$ts1[1] = number_format(round($t11 - $t10, 6), 6);
$ts1[2] = number_format(round($t12 - $t11, 6), 6);
$ts1[3] = number_format(round($t13 - $t12, 6), 6);
$ts1[4] = number_format(round($t14 - $t13, 6), 6);

$min_idx = array_keys($ts1, min($ts1))[0];
foreach ($ts1 as $idx => $val) {
    if ($idx == $min_idx) {
        $ts1[$idx] = "   $val   ";
    } else {
        $ts1[$idx] = "/* $val */";
    }

}

$ts2[1] = number_format(round($t21 - $t20, 6), 6);
$ts2[2] = number_format(round($t22 - $t21, 6), 6);
$ts2[3] = number_format(round($t23 - $t22, 6), 6);
$ts2[4] = number_format(round($t24 - $t23, 6), 6);

$min_idx = array_keys($ts2, min($ts2))[0];
foreach ($ts2 as $idx => $val) {
    if ($idx == $min_idx) {
        $ts2[$idx] = "   $val   ";
    } else {
        $ts2[$idx] = "/* $val */";
    }

}

$ts3[1] = number_format(round($t31 - $t30, 6), 6);
$ts3[2] = number_format(round($t32 - $t31, 6), 6);
$ts3[3] = number_format(round($t33 - $t32, 6), 6);
$ts3[4] = number_format(round($t34 - $t33, 6), 6);

$min_idx = array_keys($ts3, min($ts3))[0];
foreach ($ts3 as $idx => $val) {
    if ($idx == $min_idx) {
        $ts3[$idx] = "   $val   ";
    } else {
        $ts3[$idx] = "/* $val */";
    }

}

$ts4[1] = number_format(round($t41 - $t40, 6), 6);
$ts4[2] = number_format(round($t42 - $t41, 6), 6);
$ts4[3] = number_format(round($t43 - $t42, 6), 6);
$ts4[4] = number_format(round($t44 - $t43, 6), 6);

$min_idx = array_keys($ts4, min($ts4))[0];
foreach ($ts4 as $idx => $val) {
    if ($idx == $min_idx) {
        $ts4[$idx] = "   $val   ";
    } else {
        $ts4[$idx] = "/* $val */";
    }

}

$ts5[1] = number_format(round($t51 - $t50, 6), 6);
$ts5[2] = number_format(round($t52 - $t51, 6), 6);
$ts5[3] = number_format(round($t53 - $t52, 6), 6);
$ts5[4] = number_format(round($t54 - $t53, 6), 6);

$min_idx = array_keys($ts5, min($ts5))[0];
foreach ($ts5 as $idx => $val) {
    if ($idx == $min_idx) {
        $ts5[$idx] = "   $val   ";
    } else {
        $ts5[$idx] = "/* $val */";
    }

}

$ts6[1] = number_format(round($t61 - $t60, 6), 6);
$ts6[2] = number_format(round($t62 - $t61, 6), 6);
$ts6[3] = number_format(round($t63 - $t62, 6), 6);
$ts6[4] = number_format(round($t64 - $t63, 6), 6);

$min_idx = array_keys($ts6, min($ts6))[0];
foreach ($ts6 as $idx => $val) {
    if ($idx == $min_idx) {
        $ts6[$idx] = "   $val   ";
    } else {
        $ts6[$idx] = "/* $val */";
    }

}

echo "             |    count     |    empty     |     comp     |     cast     |\n";
echo "-------------|--------------|--------------|--------------|--------------|\n";
echo "       Empty |";
echo $ts0[1] . '|';
echo $ts0[2] . '|';
echo $ts0[3] . '|';
echo $ts0[4] . "|\n";

echo "     Uniform |";
echo $ts1[1] . '|';
echo $ts1[2] . '|';
echo $ts1[3] . '|';
echo $ts1[4] . "|\n";

echo "     Integer |";
echo $ts2[1] . '|';
echo $ts2[2] . '|';
echo $ts2[3] . '|';
echo $ts2[4] . "|\n";

echo "      String |";
echo $ts3[1] . '|';
echo $ts3[2] . '|';
echo $ts3[3] . '|';
echo $ts3[4] . "|\n";

echo "       Mixed |";
echo $ts4[1] . '|';
echo $ts4[2] . '|';
echo $ts4[3] . '|';
echo $ts4[4] . "|\n";

echo " Associative |";
echo $ts5[1] . '|';
echo $ts5[2] . '|';
echo $ts5[3] . '|';
echo $ts5[4] . "|\n";

echo "-------------|--------------|--------------|--------------|--------------|\n";
echo "       Total |";
echo $ts6[1] . '|';
echo $ts6[2] . '|';
echo $ts6[3] . '|';
echo $ts6[4] . "|\n";

행 빈 행 " 등)을 제외하는:0 => ''합니다.empty()에러가 발생하므로, 다음의 조작을 실행할 수 있습니다.

if (array_filter($playerlist) == []) {
  // Array is empty!
}

: 콜백이 제공되지 않으면 FALSE와 동일한 배열의 모든 엔트리가 삭제됩니다array_filter()(부울로 변환 참조).

NULL, 및 빈 NULL, FALSE')을 ''으로 해 단, 0으로 해 주세요).0를수 있습니다.strlen콜백으로서 다음과 같이 합니다.

$is_empty = array_filter($playerlist, 'strlen') == [];

테스트 중인 변수가 실제로 빈 배열인지 여부를 확인하려면 다음과 같은 방법을 사용할 수 있습니다.

if ($variableToTest === array()) {
    echo 'this is explicitly an empty array!';
}

왜 아무도 이 대답을 하지 않았습니까?

$array = [];

if($array == []) {
    // array is empty
}
is_array($detect) && empty($detect);

is_array

사용할 수 있는 어레이 콘텐츠를 확인하는 경우:

$arr = array();

if(!empty($arr)){
  echo "not empty";
}
else 
{
  echo "empty";
}

여기를 참조해 주세요.http://codepad.org/EORE4k7v

인덱스 어레이의 가장 간단한 방법은 다음과 같습니다.

    if ($array) {
      //Array is not empty...  
    }

어레이의 'if' 조건은 어레이가 비어 있지 않으면 true평가되고 어레이가 비어 있으면 false로 평가됩니다.이는 연관지을 수 있는 어레이에는 적용되지 않습니다.

이 코드를 사용합니다.

$variable = array();

if( count( $variable ) == 0 )
{
    echo "Array is Empty";
}
else
{
    echo "Array is not Empty";
}

다만, 어레이에 다수의 키가 있는 경우, 이 코드는, 여기서의 다른 회답에 비해, 키를 세는 데 시간이 걸립니다.

하시면 됩니다.array_filter()모든 상황에 적합합니다.

$ray_state = array_filter($myarray);

if (empty($ray_state)) {
    echo 'array is empty';
} else {
    echo 'array is not empty';
}

가장 적절한 결정을 내리려면 데이터의 품질과 따라야 할 프로세스를 알아야 합니다.

  1. 이 행을 부적격/무시/삭제할 경우 필터링의 가장 빠른 지점은 mysql 쿼리에 있어야 합니다.
  • WHERE players IS NOT NULL
  • WHERE players != ''
  • WHERE COALESCE(players, '') != ''
  • WHERE players IS NOT NULL AND players != ''
  • ...상점 데이터에 따라 다르겠지만, 다른 방법이 있을 것입니다. 여기서 마치겠습니다.
  1. 결과 세트에 열이 존재하는지 100% 확신할 수 없는 경우 열이 선언되었는지 확인해야 합니다. '불러주세요'라는 뜻입니다.array_key_exists(),isset() , 「」empty()칼럼에 있습니다.여기서 굳이 차이점을 설명하지 않겠습니다(다른 SO 페이지도 있습니다. 번째 페이지: 1, 2, 3).즉, 결과 세트를 완전히 제어할 수 없는 경우 애플리케이션의 "유연성"이 과다한 것일 수 있으므로 존재하지 않는 컬럼 데이터에 액세스할 필요가 있는지 다시 생각해 보아야 합니다.사실상 컬럼이 선언되어 있는지 확인할 필요가 없다는 것입니다.이 태스크에는 필요 없습니다.만약 누군가 그렇게 주장한다면empty()더 적절하고 스크립팅의 표현력에 대한 개인적인 의견을 추진하고 있습니다.아래 #5의 조건이 애매하다고 생각되면 코드에 인라인 코멘트를 추가해 주세요.을 사용법요컨대 함수 호출에는 프로그램상 이점이 없습니다.

  2. 에는 자열음음음음음음 might might might 。가 포함되어 있을 수 있습니다.0truetrue/valid/non-empty로 할 수 ?이 경우 열 값의 길이가 있는지 확인만 하면 됩니다.

다음은 를 사용한 데모입니다.strlen()분해된 경우 문자열이 의미 있는 배열 요소를 생성할지 여부를 나타냅니다.

  1. 무조건 폭발함으로써 빈 어레이가 아닌 어레이를 생성할 수 있다는 점을 언급하는 것이 중요하다고 생각합니다.증명은 다음과 같습니다.데모 즉, 어레이가 비어 있는지 확인하는 것은 전혀 도움이 되지 않습니다.매번 비어 있지 않습니다.

  2. 를 들어,은 「」로부터 입니다( 「」로부터 「ID」로부터).1 됩니다).if ($gamerow['players']) {필요한 건 끝이에요.

  3. 은 이 하고 무엇을 잠깐만, 이 값의 공허함을 판별하고 무엇을 하고 있습니까?다운스크립트가 있는 경우$playerlist조건부로 변수를 선언하면 이전 행의 값을 사용하거나 통지를 다시 생성할 위험이 있습니다. 무조건 선언을 해야 요?$playerlist뭔가로요?문자열에 truthy 값이 없는 경우 빈 어레이를 선언하는 것이 응용 프로그램에 도움이 됩니까?아마 대답은 '그렇다'일 것이다.이 경우 빈 배열로 폴백하여 변수가 배열 유형임을 확인할 수 있습니다. 이렇게 하면 해당 변수를 루프로 공급해도 문제가 되지 않습니다.다음 조건부 선언은 모두 동일합니다.

  • if ($gamerow['players']) { $playerlist = explode(',', $gamerow['players']); } else { $playerlist = []; }
  • $playerlist = $gamerow['players'] ? explode(',', $gamerow['players']) : [];

왜 내가 이 기본적인 일을 설명하려고 그렇게까지 했을까?

  1. 나는 이 페이지의 거의 모든 답변을 내부고발했다.이 답변은 복수표를 얻을 가능성이 높다(이것은 이 사이트를 옹호하는 내부고발자에게 자주 일어난다.만약 답변에 다운투표가 있고 코멘트가 없다면 항상 회의적이다).
  2. Stackoverflow는 잘못된 정보와 차선의 기술로 연구자를 오염시키지 않는 신뢰할 수 있는 리소스인 것이 중요하다고 생각합니다.
  3. 이것이, 장래의 개발자를 얼마나 배려하고 있는지를 나타내, 카피 페이스트·프로그래머 세대에게 스푼으로 건네는 것이 아니라, 그 방법과 이유를 학습시킵니다.
  4. 새로운 복제 페이지를 닫기 위해 오래된 페이지를 자주 사용합니다.이것은 중복된 페이지를 빨리 찾을 수 있는 베테랑 자원봉사자의 책임입니다.잘못된/잘못된/최적하지 않은/오해의 정보가 있는 오래된 페이지를 참고할 수 없습니다.그것은, 새로운 연구자에게 적극적으로 폐를 끼치고 있기 때문입니다.
empty($gamerow['players'])

배열이 비어 있는지 여부를 확인하는 가장 좋은 방법은 다음과 같이 count()를 사용하는 것이라고 생각합니다.

if(count($array)) {
    return 'anything true goes here';
}else {
    return 'anything false'; 
}
 $gamerow = mysql_fetch_array($gameresult);

if (!empty(($gamerow['players'])) {
   $playerlist = explode(",", $gamerow['players']);
}else{
 
  // do stuff if array is empty
}

여기서 이미 말한 것을 반복하지 않을 것이며, PHP-7.3에서 더 효율적인 방법은!empty($myARR) ★★★★★★★★★★★★★★★★★」isset($myARR[0])을 하다 , 그 외는 느리다array_key_exists($myARR[0]) 하고 있어요.$myARR !== Array() | $myARR !== [] 저는 ★★★★★★★★★★★★★★★★★★★★★★★★★empty()심플하고 빠릅니다.

$status = "";

$new_array = array();

if(!empty($new_array)){
  $status = "1";   // not a blank array
}
else{
  $status = "0";   // blank array
}

어레이가 비어 있는지, 값이 포함되어 있지 않은지 여부를 확인하기 위한 많은 옵션이 이미 논의되어 있습니다.

if ($playerlist) {}

if (!empty($playerlist)) {}

if (count($playerlist) > 0) {}

모든 사람은 장단점이 있다.

그러나 어레이에 숫자 키만 있는 것이 확실하다면 실현 가능한 다른 옵션이 있습니다(즉, 이 옵션은 0부터 시작).explode()★★★★★★★★★★★★★★★★★★:

if (isset($playerlist[0])) {
  // do something
}

이것은 다른 솔루션보다 조금 더 빠릅니다.

다음 php 함수를 사용하여 배열이 비어 있는지 확인할 수 있습니다.

「」를 사용합니다.empty()

$variable = array();
    if(empty($variable)){
    echo("The array is empty.");
    }

출력: 어레이가 비어 있습니다.

「」를 사용합니다.sizeof()

$variable = array();
$arraysize = sizeof($variable);
echo("The size of the array is $arraysize. \n");
if(sizeof($variable) == 0)
echo("The array is empty.");

출력:

어레이의 사이즈는 0 입니다.

어레이가 비어 있습니다.

array_filter 재귀 및 수

function array_filter_recursive(array $arr) 
  { 
    array_walk($arr,function(&$item){if (is_array($item))  { $item = array_filter_recursive($item);}});
    return array_filter($arr); 
  } 
   
  function is_empty_array(array $arr):bool{
    return count(array_filter_recursive($arr)) == 0;
  }

시험

$c=['b'=>2,'c'=>3];
$a=[];
$b=[[]];
$d=['a'=>[]];
$e=['a'=>[],[]];
$f=['a'=>[[],[],[]],[]];
$g=[[[],[[],[[],[[],[]]]]],[]];
$i=[[[],[[],[[],[[],['s'=>1]]]]],[]];
var_dump(is_empty_array($c));//false
var_dump(is_empty_array($a));//true
var_dump(is_empty_array($b));//true
var_dump(is_empty_array($d));//true
var_dump(is_empty_array($e));//true
var_dump(is_empty_array($f));//true
var_dump(is_empty_array($g));//true
var_dump(is_empty_array($i));//false

저는 이 문제를 아래 코드로 해결했습니다.

$catArray=array();                          

$catIds=explode(',',$member['cat_id']);
if(!empty($catIds[0])){
foreach($catIds as $cat_id){
$catDetail=$this->Front_Category->get_category_detail($cat_id);
$catArray[]=$catDetail['allData']['cat_title'];
}
echo implode(',',$catArray);
}

이것은 모든 경우에 효과가 있는 것 같습니다.

if(!empty(sizeof($array)))

언급URL : https://stackoverflow.com/questions/2216052/how-to-check-whether-an-array-is-empty-using-php