Подтвердить что ты не робот

Проверьте, не массив ли пуст

******** 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
    )
4b9b3361

Ответ 1

Я подозреваю, что он может содержать (bool) FALSE, что неверно для is_null().

Попробуйте просто:

if ($book['Booking']['comments']) {

Это также должно работать для всего, что оценивается как FALSE, как пустая строка.

Ответ 2

ваш вопрос слишком локализован. В коде есть какая-то опечатка или что-то в этом роде.

Существует абсолютно без разницы, что использовать в вашем случае, if (!empty($var)) или if ($var). Итак, if ($book['Booking']['comments']) { работал, проблем с вашим if (!empty($book['Booking']['comments'])) тоже не было. Таким образом, в вопросе не было никакого вопроса.

Все эти ответы, пытающиеся ответить на этот не-реальный вопрос, носят бред.

единственной проблемой может быть космический символ, упомянутый jotorres1, но вы уже сказали, что его нет.

Ответ 3

if (count($book['Booking']['comments']) > 0) { ... }

Ответ 4

!empty($var), count($var) > 0, !$var, все они будут работать в большинстве ситуаций. empty() имеет "преимущество" не бросать уведомление, когда данный ключ переменной/массива не существует, но если вам не нужно беспокоиться о том, что достаточно булевой проверки (!$var) (см. здесь, типы которых преобразуются в FALSE). Это также самый короткий код.

Ответ 5

Я не думаю, что $book['Booking']['comments'] - это даже массив в этом случае. Поэтому вы можете просто использовать strlen http://php.net/manual/en/function.strlen.php

<?php if (strlen($book['Booking']['comments'])) {?>

Ответ 6

Вы можете захотеть trim() это свойство удалить все пробелы перед тестированием, если оно empty().

Изменить: я предполагаю, что это строка. Это не похоже на пустой массив.

Ответ 7

который не является массивом точно.

do var_dump($book["Booking"]["comments"]), чтобы проверить тип данных соответственно

Ответ 8

Я думаю, вы можете попытаться использовать эту следующую логику и попытаться сделать ее немного проще.

<?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;?>

Я не тестировал это, поскольку я не могу сейчас, но, надеюсь, это должно немного помочь вам.

Ответ 9

  • Пустой массив:

    $array = array();

    reset($array) возвращает FALSE.

  • Заполненный массив:

    $array = array('foo', 'bar');

    reset($array) возвращает первый элемент ('foo').

Ответ 10

Если вы хотите выяснить, действительно ли переменная, которую вы тестируете, явно не пустой массив, вы можете использовать что-то вроде этого:

if ($book['Booking']['comments'] !== array()) {
  //your logic goes here
  ....................
}

Эта логика является более быстрой из других решений. Также он будет поддерживать стандарт кодирования.