Ответ 1
Я подозреваю, что он может содержать (bool) FALSE
, что неверно для is_null()
.
Попробуйте просто:
if ($book['Booking']['comments']) {
Это также должно работать для всего, что оценивается как FALSE
, как пустая строка.
******** Update **********
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] => Seon
[surname] => Gleeson
[address1] => 8 Crow St
[address2] =>
[city] => Dublin
[state] => Co. Dublin
[postcode] => 2
[country] => Ireland
[phone] => 0863269087
[mobile] =>
[fax] =>
[email] => [email protected]
[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] => Seon Gleeson
)
Я подозреваю, что он может содержать (bool) FALSE
, что неверно для is_null()
.
Попробуйте просто:
if ($book['Booking']['comments']) {
Это также должно работать для всего, что оценивается как FALSE
, как пустая строка.
ваш вопрос слишком локализован. В коде есть какая-то опечатка или что-то в этом роде.
Существует абсолютно без разницы, что использовать в вашем случае, if (!empty($var))
или if ($var)
. Итак, if ($book['Booking']['comments']) {
работал, проблем с вашим if (!empty($book['Booking']['comments']))
тоже не было. Таким образом, в вопросе не было никакого вопроса.
Все эти ответы, пытающиеся ответить на этот не-реальный вопрос, носят бред.
единственной проблемой может быть космический символ, упомянутый jotorres1, но вы уже сказали, что его нет.
if (count($book['Booking']['comments']) > 0) { ... }
!empty($var)
, count($var) > 0
, !$var
, все они будут работать в большинстве ситуаций. empty() имеет "преимущество" не бросать уведомление, когда данный ключ переменной/массива не существует, но если вам не нужно беспокоиться о том, что достаточно булевой проверки (!$var
) (см. здесь, типы которых преобразуются в FALSE). Это также самый короткий код.
Я не думаю, что $book['Booking']['comments']
- это даже массив в этом случае. Поэтому вы можете просто использовать strlen
http://php.net/manual/en/function.strlen.php
<?php if (strlen($book['Booking']['comments'])) {?>
Вы можете захотеть trim()
это свойство удалить все пробелы перед тестированием, если оно empty()
.
Изменить: я предполагаю, что это строка. Это не похоже на пустой массив.
который не является массивом точно.
do var_dump($book["Booking"]["comments"])
, чтобы проверить тип данных соответственно
Я думаю, вы можете попытаться использовать эту следующую логику и попытаться сделать ее немного проще.
<?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;?>
Я не тестировал это, поскольку я не могу сейчас, но, надеюсь, это должно немного помочь вам.
Пустой массив:
$array = array();
reset($array)
возвращает FALSE
.
Заполненный массив:
$array = array('foo', 'bar');
reset($array)
возвращает первый элемент ('foo'
).
Если вы хотите выяснить, действительно ли переменная, которую вы тестируете, явно не пустой массив, вы можете использовать что-то вроде этого:
if ($book['Booking']['comments'] !== array()) {
//your logic goes here
....................
}
Эта логика является более быстрой из других решений. Также он будет поддерживать стандарт кодирования.