Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> in_array не корректная проверка
zenbool  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 12
Пользователь №: 42049
На форуме: 1 год, 1 месяц, 4 дня
Карма:




Подскажите начинающему, дайте ссылку где почитать, почему получается не корректная проверка:


$array = array(
'egg' => true,
'cheese' => false,
'hair' => 765,
'goblins' => null,
'ogres' => 'no ogres allowed in this array'
);

// Loose checking -- return values are in comments

// First three make sense, last four do not


echo (in_array(null, $array) ? 'good' : 'bad'); // true
echo (in_array(false, $array) ? 'good' : 'bad'); // true
echo (in_array(765, $array) ? 'good' : 'bad'); // true
echo (in_array(763, $array) ? 'бред' : 'good'); // true
echo (in_array('egg', $array) ? 'бред' : 'good'); // true
echo (in_array('hhh', $array) ? 'бред' : 'good'); // true
echo (in_array(array(), $array) ? 'бред' : 'good'); // true


Если указать строгую проверку, все ОК, но почему в таком виде получается не корректно?

Это сообщение отредактировал zenbool - 10.12.2015 - 16:15
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Dezigo  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Indiana Jones
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1000
Пользователь №: 5429
На форуме: 8 лет, 5 месяцев, 11 дней
Карма: 45




В каких то случаях вы проверяете по значению, а в каких то по ключу.

echo (in_array('egg', $array)  ? 'бред' : 'good'); // true
PMПисьмо на e-mail пользователю
    -1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
depp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 293
Пользователь №: 40589
На форуме: 2 года, 1 день
Карма: 19




происходит только когда разные типы данных сравниваете. надо сравнивать либо одинаковые типы, чтобы php не пытался сам приводить данные к одному типу, либо проводить in_array со строгой проверкой, выставляя третий аргумент функции в TRUE.
bool in_array ( mixed $needle , array $haystack , TRUE )


Это сообщение отредактировал depp - 10.12.2015 - 17:54
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
zenbool  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 12
Пользователь №: 42049
На форуме: 1 год, 1 месяц, 4 дня
Карма:




тут надо карму минусовать не только за ответы, а за вопрос в первую очередь.
Поторопился с вопросом. В попыхах не разобрался...

Манипуляции с типами: http://php.net/manual/ru/language.types.type-juggling.php
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




zenbool
Зачем карму минусовать? Тебе же depp дал ответ вполне корректный.


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11786
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 12 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 12 дней


ему дали неверный ответ, имеет право


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5493
Пользователь №: 35718
На форуме: 4 года, 16 дней
Карма: 167




inpost, Invis1ble, вообще-то zenbool имел ввиду себя и то что он поторопился разместить вопрос на форуме не заглянув в мануал.

zenbool, на самом деле ничего страшного в этом нет. Оформленный в теме вопрос на самом деле даже самому вопрошающему помогает найти ответ. Утро вечера как говориться мудренее.
И как сказал однажды Игорь Вячеславович: "Единственный глупый вопрос тот, на котороый уже известен ответ".


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
zenbool  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 12
Пользователь №: 42049
На форуме: 1 год, 1 месяц, 4 дня
Карма:




Цитата (inpost @ 11.12.2015 - 00:02)
zenbool
Зачем карму минусовать? Тебе же depp дал ответ вполне корректный.

Согласен, ответ корректный, только не на мой вопрос smile.gif

Если что, никого не хотел обидеть. Всем удачи!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22691
Пользователь №: 20039
На форуме: 6 лет, 11 месяцев, 28 дней
Карма: 599




Я тоже сразу не так вопрос прочитал. Странно как-то. wink.gif
Просто в добавок к первой ссылке скину и эту ссылку, может кому полезно будет: http://php.net/manual/ru/types.comparisons.php


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса