За последние 24 часа нас посетили 17579 программистов и 1650 роботов. Сейчас ищут 859 программистов ...

emptyM, emptyA

Тема в разделе "Прочие вопросы по PHP", создана пользователем Koc, 20 июл 2008.

  1. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    вот кой-че сваял
    PHP:
    1. <?php
    2. /* emptyM($var1, $var2, ..., $varN)
    3.     retutn true, if one of vars is empty
    4. */
    5. function emptyM(){
    6.     if(func_num_args()==0) {
    7.         return true;
    8.     }
    9.     $args = func_get_args();
    10.     foreach($args as $arg){
    11.         if(empty($arg)){
    12.             return true;
    13.         }
    14.     }
    15.     return false;
    16. }
    17.  
    18. /* emptyA($array);
    19.     return true, if one of values in $array is empty
    20. */
    21. function emptyA($array){
    22.     foreach($array as $value){
    23.         if(is_array($value)) {
    24.             if(empty($value))
    25.                 return true;
    26.             if(emptyA($value))
    27.                 return true;
    28.         } else {
    29.             if(empty($value))
    30.                 return true;
    31.         }
    32.     }
    33.     return false;
    34. }
    35. ?>
    c 1 ф-ией все нормлаьно. Вот результат работы второй:

    PHP:
    1. <?php
    2. $a = array(
    3.            "aa"=>array(
    4.                        "aa"=>''
    5.                        ),
    6.            "bb"=>3,
    7.            "cc"=>"aaa"
    8.            );
    9. $b = array();
    10.  
    11. var_dump(empty($a)); //bool(false)
    12. var_dump(empty($b)); //bool(true)
    13.  
    14. var_dump(emptyA($a)); //bool(true)
    15. var_dump(emptyA($b)); //bool(false), а должно быть bool(true)
    16. ?>
    помогите исправить
     
  2. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    там второй массив пустой. хотя и существует. и $value у тебя null. а empty для таких переменных вроде и должен false возвращать. что и происходит
     
  3. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    http://ua2.php.net/manual/ru/function.empty.php

     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    А если сделать ещё одно условие if (!count($array)) return true;
     
  5. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    в том то и дело, что пробовал и
    function emptyA($array){
    foreach($array as $value){
    if(is_array($value)) {
    if(!count($value))
    return true;
    if(emptyA($value))
    return true;
    } else {
    if(empty($value))
    return true;
    }
    }
    return false;
    }
    и через sizeof. И все равно вот такая хня.

    upd:
    PHP:
    1. <?php
    2. function emptyA($array){
    3.     if(empty($array))
    4.         return true;
    5.     foreach($array as $value){
    6.         if(is_array($value)) {
    7.             if(empty($value))
    8.                 return true;
    9.             if(emptyA($value))
    10.                 return true;
    11.         } else {
    12.             if(empty($value))
    13.                 return true;
    14.         }
    15.     }
    16.     return false;
    17. }
    18. ?>
    проблема решена
     
  6. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    А так?
    PHP:
    1. <?
    2.  function emptyA($array){
    3.    if (!count($array)) return true;
    4.      foreach($array as $value){
    5.          if(is_array($value)) {
    6.              if(empty($value)) return true;
    7.              if(emptyA($value)) return true;
    8.          } else {
    9.              if(empty($value)) return true;
    10.          }
    11.      }
    12.      return false;
    13.  }
    14.  ?>
     
  7. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    какая разница: empty или count?
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ну у тебя не работало с empty() я подумал может с count =)
    щас работает?
     
  9. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    я не там ставил проверку
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Ыы я не заметил =)))