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

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

当前回答

为什么没有人回答:

$array = [];

if($array == []) {
    // array is empty
}

其他回答

我已经用以下代码解决了这个问题。

$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);
}

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

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

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

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

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

你可以使用array_filter(),它适用于所有情况:

$ray_state = array_filter($myarray);

if (empty($ray_state)) {
    echo 'array is empty';
} else {
    echo 'array is not empty';
}
empty($gamerow['players'])

已经讨论了许多检查数组是否为空或不包含值的选项

If ($playerlist) {}

If (!empty($playerlist)) {}

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

各有利弊。

但还有另一种选择,如果你确定,你的数组只有数字键,从0开始(即,这发生在你爆炸()一个字符串):

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

这甚至比其他解还要快一点。