PHP检查Array是否为空逻辑不起作用

时间:2016-10-26 11:52:32

标签: php arrays

我有一个加载并创建空数组的页面:

$_SESSION['selectedItemIDs'] = array();

如果用户没有添加任何存储在数组中的选择,那么请检查数组并进行相应的分支,但是我的logic/syntax中似乎有一些错误在这里失败。

我在这里测试$_SESSION['selectedItemIDs']是否已设置但为空:

if (isset($_SESSION['selectedItemIDs']) && $_SESSION['selectedItemIDs'] !== '') {
    // update the selections in a database
} else {
    // nothing selection so just record this in a variable
$selectedItems = 'no selected items were made';
}

如果我打印$_SESSION['selectedItemIDs']数组而没有选择进行测试,我会得到这个:

[selectedItemIDs] => Array
    (
    )

然而$selectedItems变量没有被设置 - 当我期望它是假的时候,它正在评估if测试为真,但我显然在这里误解了一些东西。

4 个答案:

答案 0 :(得分:7)

使用empty()功能。

  

empty() - 如果变量是空字符串,false,array(),NULL,“0?,0和未设置的变量”,它将返回true。

<强>语法

empty(var_name)

返回值

FALSE if var_name has a non-empty and non-zero value.

价值类型:

Boolean

空事列表:

  • “0”(0作为字符串)
  • 0(0为整数)
  • “”(空字符串)
  • NULL
  • FALSE
  • “”(空字符串)
  • array()(空数组)
  • $ VAR_NAME; (声明的变量,但在类中没有值)

<强>代码

if (!empty($_SESSION['selectedItemIDs']) ) {
    // update the selections in a database
} else {
    // nothing selection so just record this in a variable
$selectedItems = 'no selected items were made';
}

答案 1 :(得分:0)

isset($_SESSION['selectedItemIDs'])

此变量已设置,但为空。 empty($_SESSION['selectedItemIDs']); 检查变量是否存在,即使它没有任何内容。

检查是否有任何用途

public static SolrRequest req;
public static void main(String[] args) throws SolrServerException,
IOException {
String urlString = "http://localhost:8983/solr/huda";
SolrClient solr = new HttpSolrClient.Builder(urlString).build();

SolrQuery query = new SolrQuery();
query.setQuery("*:*");  
SolrRequest<QueryResponse> req = new QueryRequest(query);
QueryResponse rsp = req.process(solr);

System.out.println("numFound: " + rsp.getResults().getNumFound());

TermsResponse termResp =rsp.getTermsResponse();
List<Term> terms = termResp.getTerms("name");
System.out.print(terms.size());
        }

PHP DOC - empty

答案 2 :(得分:0)

if (!empty($_SESSION['selectedItemIDs'])) {
    // update the selections in a database
} else {
    // nothing selection so just record this in a variable
    $selectedItems = 'no selected items were made';
}

isset($_SESSION['selectedItemIDs']) =&gt;它会检查这个参数是否设置正确。

$_SESSION['selectedItemIDs'] !== '' =&gt;这将完全比较您的参数类型不是''但是在这里我猜你的selectedItemIDs是数组所以它让你进去

答案 3 :(得分:0)

您可以检查此数组的计数。

try
{
    string log = "some message";
    string mFileName = "some directory to the log file";
    Console.WriteLine(log);
    using (StreamWriter w = File.AppendText(mFileName))
    {
         w.WriteLine(log);
         w.Dispose();
    }
}
catch (Exception e)
{
    Console.WriteLine("Error Log: " + e.Message);
}