Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

PHP isset в string ключ apply. как?

714
11 сентября 2012 года
clgs
226 / / 29.10.2008
Добрый день.
Под конец рабочего дня решил тыпануть. Вот собственно:
 
Код:
var_dump($_POST['save'],$_POST['save']['apply'],isset($_POST['save']['apply']));
array(1) { ["apply"]=> string(9) "Применить" } string(9) "Применить" bool(true) - тут все понятно

string(8) "Изменить" string(1) "И" bool(true) - Как? И почему? Да и зачем?

Неужели теперь писать is_array && array_key_exists ?
366
12 сентября 2012 года
int
668 / / 30.03.2005
true, потому что isset(). А что не так?
714
12 сентября 2012 года
clgs
226 / / 29.10.2008
Цитата: int
true, потому что isset(). А что не так?



Ну так же я проверяю наличие элемента в массиве, а тут строка, и соответственно указанного мной элемента быть не может. Зачем происходить преобразование? Да и как в этом случае теперь поступать?

1
12 сентября 2012 года
kot_
7.3K / / 20.01.2000
Цитата: clgs
Цитата: int
true, потому что isset(). А что не так?



Ну так же я проверяю наличие элемента в массиве, а тут строка, и соответственно указанного мной элемента быть не может. Зачем происходить преобразование? Да и как в этом случае теперь поступать?


я чтото не понял вопроса.
Ты проверяешь - инициализированная ли переменная. И так как она инициализированна - то ты получаешь тру.
Если тебе нажно проверять - массив ли это - то соотвественно да - надо использовать is_array. Не понятно, что у тебя вызвало такое удивление?

714
13 сентября 2012 года
clgs
226 / / 29.10.2008
kot_, давайте не про isset, а про следующее. Менять это больше напрягает, не нотисов, не варнингов...
 
Код:
$arr=array('save'=>'Строка');
var_dump($arr['save']['apply']); // string(1) "С"
Как правильно писать:
 
Код:
isset($_POST['save']['apply']) // 1
array_key_exists('save',(array)$_POST)&&array_key_exists('apply',(array)$_POST['save']) // 2
или? // 3
366
13 сентября 2012 года
int
668 / / 30.03.2005
1) Строка - это массив символов (почти)
2) К массиву можно обращаться по индексу
3) Индекс - это число
4) строка в число: intval('строка') == 0
5) строка['строка'] == строка[0]

попробуй is_array($_POST['save'])
714
13 сентября 2012 года
clgs
226 / / 29.10.2008
Ну это я знаю. Только я не понимаю разработчиков, зачем делать эти преобразования. И строка это массив символов, вообще ужас) ИМХО
int, т.е. вы рекомендуете следующее?
 
Код:
is_array($_POST['save'])&&isset($_POST['save']['apply'])
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог