X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Нахожу несуществующее значение в массиве
Alex2017
Alex2017
Topic Starter сообщение 10.1.2011, 17:38; Ответить: Alex2017
Сообщение #1


Добрый день.
Нашел интересный тест по пхп на мамбе.
Ссылка если кому интересно.
В тесте наткнулся на следующий код:
[PHP]
$a = in_array("test", array(0));
var_dump($a);[/PHP]
Мне казалось, что ответ очевиден - false.
Но вот незадача - выдает true.
По идее, в первой строчке ищем строку "test" в пустом массиве, но на выходе получаем 1.
Знатоки, объясните, пожалуйста, в чем я ошибаюсь.
Заранее благодарен!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 10.1.2011, 17:51; Ответить: ZhukV
Сообщение #2


Скорее всего глюк. Не может быть такого!!!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alex2017
Alex2017
Topic Starter сообщение 10.1.2011, 17:57; Ответить: Alex2017
Сообщение #3


Ну попробуйте сами, возможно и вправду глюк. Хотя там нет задачек без подвохов. false сильно просто.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 10.1.2011, 17:58; Ответить: alexdrob
Сообщение #4


http://xandeadx.ru/blog/php/125
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Alex2017
Alex2017
Topic Starter сообщение 10.1.2011, 18:02; Ответить: Alex2017
Сообщение #5


Спасибо! На пхп.су об этом умолчали.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 10.1.2011, 18:43; Ответить: ZhukV
Сообщение #6


Спасибо огромное. Сколько уж программирую, об этом впервые услышал, да и вообще узнал о третьем параметре. Спасибо!!!
:goodpost:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 10.1.2011, 18:58; Ответить: alexdrob
Сообщение #7


Ну посмотрев с другом в чём именно дело, пришли к выводу, что просто то что ищем приводится к типу int так как 0 - тип int
Получается что
$a = in_array("test", array(0));
то же что
0 == "test"
то есть 0 == 0
так как (int)"test" = 0
вот отсюда и истина
если так
0 === "test"
то не равно с проверкой на тип
то же что и
$a = in_array("test", array(0),true);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 10.1.2011, 19:03; Ответить: ZhukV
Сообщение #8


Да уж........
Замудрено немного, но понятно :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 10.1.2011, 19:14; Ответить: alexdrob
Сообщение #9


Ну то что ищем, приводится к типу текущего элемента массива. Когда мы находимся на элементе 0 то наша переменная "test" приводится к типу int
Ну пример
[PHP]<?php
$a = "test";
$b = 0;
$c = (int)$a;
echo '$a = '.$a.'<br/>';
echo '$b = '.$b.'<br/>';
echo '$c = '.$c.'<br/>';
?>
[/PHP]
так понятней?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 10.1.2011, 19:17; Ответить: alexdrob
Сообщение #10


странно, теги повырезались)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Значение чекбокса сразу добавляется в тектовое поле
2 mixxxxxx 3167 3.11.2014, 11:25
автор: -mixxxxxx-
Открытая тема (нет новых ответов) Замена имени переменной в строке на ее значение
5 RayOfLight 11760 16.9.2010, 17:42
автор: -unnormal-
Открытая тема (нет новых ответов) Перебросить значение из одного фрейма в другой
1 LuckyStr 6876 6.9.2009, 16:01
автор: -LuckyStr-
Открытая тема (нет новых ответов) Как получить значение тайтла тега?
2 Albert_hb 10555 2.4.2009, 13:33
автор: -Albert-
Открытая тема (нет новых ответов) Поиск в заданном массиве
13 Vitaly576 10890 16.3.2009, 14:29
автор: -Vitaly576-


 



RSS Текстовая версия Сейчас: 23.4.2024, 17:14
Дизайн