玩家要么是空的,要么是逗号分隔的列表(或者是单个值)。检查它是否为空的最简单的方法是什么?我假设我可以这样做,只要我取回$gameresult数组到$gamerow?在这种情况下,如果$playerlist是空的,跳过爆炸可能会更有效,但为了讨论,我如何检查数组是否为空?

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

当前回答

如果你想排除假行或空行(例如0 => "),在使用empty()将失败的情况下,你可以尝试:

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

array_filter():如果没有提供回调,数组中所有等于FALSE的条目(参见转换为布尔值)将被删除。

如果你想删除所有NULL, FALSE和空字符串("),但保留零值(0),你可以使用strlen作为回调,例如:

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

其他回答

如果你想排除假行或空行(例如0 => "),在使用empty()将失败的情况下,你可以尝试:

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

array_filter():如果没有提供回调,数组中所有等于FALSE的条目(参见转换为布尔值)将被删除。

如果你想删除所有NULL, FALSE和空字符串("),但保留零值(0),你可以使用strlen作为回调,例如:

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

$new_array = array();

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

我不会重复这里已经说过的话,只是在PHP-7.3上测试和更有效的方法是!empty($myARR)或isset($myARR[0]),两者显示相同的速度。其他的都比较慢,包括array_key_exists($myARR[0])和比较$myARR !== Array() | $myARR !==[]。所以,我更喜欢empty(),简单快捷。

is_array($detect) && empty($detect);

is_array

这似乎适用于所有情况

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