********更新**********
var_dump: string(0)
“”
我正在尝试检查数组的一部分是否为空,然后显示代码,但无论如何都会显示代码。
我试过了!is_null !empty
。我不确定哪个应该是正确的,还是应该使用:
if (sizeof($book['Booking']['comments'])>0)
代码:
<?php if (!empty($book['Booking']['comments'])) {?>
<table width="100%" border="0">
<tbody>
<tr>
<td style="font-family:'Lucida Grande', sans-serif;font-size:12px;font-weight:normal;color:#666666;">
<?=$book['Booking']['comments']?>
</td>
</tr>
</tbody>
</table>
<? } ?>
阵列:
Array
(
[Booking] => Array
(
[id] => 109
[user_id] => 1
[corporate_account_id] => 0
[id_ref] => RES000109
[price] => 178.00
[arrival] => 2011-10-18 00:00:00
[departure] => 2011-10-19 00:00:00
[rate_title] =>
[adult_guests] => 4
[child_guests] => 0
[company] => gravitate
[titlename] =>
[firstname] => John
[surname] => Doe
[address1] => 123 Fake St
[address2] =>
[city] => New York
[state] => NY
[postcode] => 12345
[country] => US
[phone] => 1111111111
[mobile] =>
[fax] =>
[email] => example@example.com
[comments] =>
[created] => 2011-10-18 13:40:47
[updated] => 2011-10-18 13:40:47
[status] => 1
[cancelled] => 0
[request_src] => website
[request_token] => 0
[token] => ayzrGnx
[survey_sent] => 0000-00-00 00:00:00
[survey_returned] => 0000-00-00 00:00:00
[send_sms] => 0
[payment_time] => 0000-00-00 00:00:00
[fullname] => John Doe
)
答案 0 :(得分:8)
我怀疑它可能包含(bool) FALSE
,而is_null()
则不然。
尝试简单:
if ($book['Booking']['comments']) {
这也适用于评估为FALSE
的任何内容,就像空字符串一样。
答案 1 :(得分:3)
你的问题过于本地化了。你的代码中有一些拼写错误。
您的案例if (!empty($var))
或if ($var)
绝对存在无差异。因此,if ($book['Booking']['comments']) {
有效,您的if (!empty($book['Booking']['comments']))
也没有问题。所以,问题根本就没有了。
所有这些试图回答这个非实际问题的答案都是无稽之谈。
唯一的问题可能是jotorres1提到的空格符号,但你已经说过没有了。
答案 2 :(得分:2)
if (count($book['Booking']['comments']) > 0) { ... }
答案 3 :(得分:2)
!empty($var)
,count($var) > 0
,!$var
,所有这些都适用于大多数情况。当给定的变量/数组键不存在时,empty()具有不抛出通知的“优点”,但如果您不必担心布尔检查(!$var
)应该足够(参见here哪些类型转换为FALSE)。它也恰好是代码中最短的。
答案 4 :(得分:1)
在这种情况下,我认为$book['Booking']['comments']
甚至不是数组。所以你可以使用strlen
http://php.net/manual/en/function.strlen.php
<?php if (strlen($book['Booking']['comments'])) {?>
答案 5 :(得分:1)
您可能希望trim()
该属性在测试之前移除任何空格,如果它是empty()
。
编辑:我假设它是一个字符串。它看起来不像是一个空数组。
答案 6 :(得分:1)
这不是一个肯定的数组。
执行var_dump($book["Booking"]["comments"])
以相应地检查数据类型
答案 7 :(得分:1)
我认为您可以尝试使用以下逻辑,并尝试使其更简单一些。
<?php
// Only change this
// and leave everything else as is
$book_comment = $book['Booking']['comments'];
$book_comment = trim($book_comment);
// The reason I use empty trim, is to take
// away any space.
// In the output, use the original $book['Booking']['comments']
if(!empty($book_comment)):?>
<table width="100%" border="0">
<tbody>
<tr>
<td style="font-family:'Lucida Grande', sans-serif;font-size:12px;font-weight:normal;color:#666666;">
<?=$book['Booking']['comments']?>
</td>
</tr>
</tbody>
</table>
<?php endif;?>
我没有对此进行测试,因为我现在不能,但希望这对你有所帮助。
答案 8 :(得分:0)
空数组:
$array = array();
reset($array)
返回FALSE
。
填充数组:
$array = array('foo', 'bar');
reset($array)
返回第一个元素('foo'
)。
答案 9 :(得分:0)
如果你想确定你正在测试的变量是否实际上是一个非空数组,你可以使用这样的东西:
if ($book['Booking']['comments'] !== array()) {
//your logic goes here
....................
}
这种逻辑比其他解决方案更快。它也将保持编码标准。