За последние 24 часа нас посетил 18281 программист и 1598 роботов. Сейчас ищут 986 программистов ...

Не проверяется массив на пустоту

Тема в разделе "PHP для новичков", создана пользователем LAlexS, 2 фев 2012.

  1. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Оба варианта, выдают как-будто массив не пуст, но там точно не должно быть записей

    Код (Text):
    1. $images = explode(",", $product['image_other']);
    2. if(count($images) > 0)
    3. {
    4.     echo "ОК";
    5. }
    Код (Text):
    1. $images = explode(",", $product['image_other']);
    2. if(!empty($images))
    3. {
    4.     echo "ОК";
    5. }
     
  2. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    Код (PHP):
    1. print_r($images); 
     
  3. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
     
  4. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    ну вот, а ты говоришь пустой )
     
  5. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Так ведь только один ключ, без всего. Или это уже не пустой? И чего делать?
     
  6. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Пустой - это

    Код (Text):
    1. array ();
    Чего делать? Я думаю что сначала надо проверять $product['image_other'] на пустоту, а потом уже "клеить" массив...
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    if (empty($images[0]))
     
  8. yuri

    yuri Активный пользователь

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    Это костыль, рекомендую никада так не делать - самому же будет лучше :)
     
  9. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Самое главное не допускать вот этого:
    Код (PHP):
    1. explode(",", NULL)
    2.  
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Ниче не костыль, explode всегда будет возвращать массив как минимум с одним элементом, если первый аргумент - не пустой. И даже в этом случае
     
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $array=array();
    2. if(!array_filter($array))
    3. {
    4.     echo'Пусто';
    5. }else{echo'Все норм';} 
     
  12. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
  13. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Поправил, не то воткнул))

    Код (PHP):
    1. $array=array(); #пусто
    2. $array=array(null); #пусто
    3. $array=array(1 => ''); #пусто
    4. $array=array('str' => ''); #пусто
    5. $array=array(1 => 0); #пусто
    6. $array=array('str' => 0); #пусто
    7. $array=array(1 => '0'); #пусто
    8. $array=array('str' => '0'); #пусто
    9.  
    10. $array=array(1 => '1'); #не пусто
    11. $array=array('str' => 'str'); #не пусто
    12.  
    13. if(!array_filter($array))
    14. {
    15.     echo'Пусто';
    16. }else{echo'Не пусто';} 
     
  14. AndreJM

    AndreJM Активный пользователь

    С нами с:
    25 янв 2012
    Сообщения:
    522
    Симпатии:
    0
    Код (PHP):
    1. var_dump((boolean)array_filter(array(0)));
    2.  
    Заканчивай уже извращаться =)))
     
  15. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Если в массиве есть 0 - то он никак не пустой.
    Вот так тру
    Код (Text):
    1. function real_empty($array) {
    2.      return implode('', $array) == '';
    3. }
     
  16. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Он и не будет пуст, если использовать типо
    Код (PHP):
    1. $array=array(0 => '0',1); #не пусто
    2.  
    3. $array=array(0 => '0'); #пусто  
    Что ради одного 0-нуля, массив целый создавать? Бред!

    Код (PHP):
    1. $array=array(0);
    2. if($array)
    3. {
    4.    echo $array;
    5. }else{
    6.         echo'Пусто';
    7.     } 
    ))
     
  17. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    так у тебя будет true, если $array = array('');
    А ТС надо чтобы для такого массива как раз было false ;) Твой подход ничем не отличается от empty($array)
     
  18. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. $array=array();
    2. if(implode('',$array)=='')
    3. {
    4.     echo'Пусто';
    5. }else{echo'Норм';} 
     
  19. LAlexS

    LAlexS Активный пользователь

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Спасибо! Сделал именно так. Все заработало
    Код (Text):
    1. if(!empty($product['image_other']))
    2. {
    3.     $images = explode(",", $product['image_other']);
    4. }
    5. if(isset($images))
    6. {
    7.     echo "ОК";
    8. }
    А вот этот вариант не прокатил (