Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > array_key_exists()


Автор: Shark 20.2.2010, 12:32
есть функция array_key_exists() и есть код, который я использую для отображения именинников

Код

    $users = implode(" | ", $born);
    echo $borns = (array_key_exists($day, $dr_all_d) ?  $dr_all_d[$day] : 0) ? ''.$users.'' : 'Именинников нет' ;
    if($day == date("d", array_key_exists($day, $dr_all_d) ?  $dr_all_d[$day] : 0) and $months == date("m", $dr_all_m[$month]))
        { echo $borns; }


но когда именинников нету выдается ошибка:
Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /home/zabeykin/public_html/sh/forum/statistika.php  on line 30
Именинников нет
Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /home/zabeykin/public_html/sh/forum/statistika.php on line 31

Ошибку вызывают эти строки:
Код

    echo $borns = (array_key_exists($day, $dr_all_d) ?  $dr_all_d[$day] : 0) ? ''.$users.'' : 'Именинников нет' ;
    if($day == date("d", array_key_exists($day, $dr_all_d) ?  $dr_all_d[$day] : 0) and $months == date("m", $dr_all_m[$month]))


error_reporting(ALL) стоит, а следовательно ошибка в отладке..
Помогите smile

Автор: s0lman 20.2.2010, 12:50
Перед этими двумя строками попробуйте поставить проверку
Код

if(!empty($dr_all_d))
{
    ...
}

Автор: awers 20.2.2010, 12:53
в начале скрипта $dr_all_d = (array)$dr_all_d;

Автор: Shark 20.2.2010, 12:56
спс. помогло... но тогда не отображается сообщение "Именинников нет"

Автор: mxt 20.2.2010, 12:57
array_key_exists($day, $dr_all_d) ?  $dr_all_d[$day] : 0)


это стоит присваивать переменной, чтоб 2 раза не вызывать одно и тоже действие

Автор: Shark 20.2.2010, 12:58
$dr_all_d = (array)$dr_all_d; - это покажет такой же результат..

Добавлено через 5 минут и 6 секунд
сделал так:
Код

    if(!empty($dr_all_d))
        {
            echo $borns = (array_key_exists($day, $dr_all_d) ?  $dr_all_d[$day] : 0) ? ''.$users.'' : 'Именинников нет' ;
            if($day == date("d", array_key_exists($day, $dr_all_d) ?  $dr_all_d[$day] : 0) and $months == date("m", $dr_all_m[$month]))
        
        { echo $borns; }
        }
        else
        { echo "Именинников нет"; }


и все нормально заработало.. спс, за помощь

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)