powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP что лучше if (isset(a['key')) или if (strpos($s, 'key'))
6 сообщений из 6, страница 1 из 1
PHP что лучше if (isset(a['key')) или if (strpos($s, 'key'))
    #38816730
Подскажите, что легче для машины при выполнении частых поисков значения

if (isset(a['key')) или if (strpos($s, 'key'))

легче спросить компилятор есть ли переменная или пройтись по сроке с поиском ее имени
...
Рейтинг: 0 / 0
PHP что лучше if (isset(a['key')) или if (strpos($s, 'key'))
    #38816739
Прошу перенести в форум PHP

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
PHP что лучше if (isset(a['key')) или if (strpos($s, 'key'))
    #38816781
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтеллаАртуаif (isset(a['key'))

Кроме бардака со скобками еще и не понятно, что такое обозначено буквой "a".
Вообще, isset() проверяет существование переменной. Точнее, имеет ли эта переменная значение, отличное от null.
В качестве аргумента функции должна быть передана переменная. Это может быть и элемент массива. Если проверяется существование элемента массива $a['key'], то использование isset() будет практически единственным правильным способом.
Но в таком случае не понятно сравнение этой функции к строковой strpos().
Если проверяется что-то другое, тогда уточните, что именно.
...
Рейтинг: 0 / 0
PHP что лучше if (isset(a['key')) или if (strpos($s, 'key'))
    #38816783
vkle,
Код: sql
1.
2.
3.
4.
5.
6.
7.
$a = array('тыква'=>1, 'слива'=>50, 'груша'=>0, 'яблоко'=>12)

if (isset($a['слива'])) ...


$s = "тыквасливагрушаяблоко";
if (strpos($s, 'слива') !== false) ...



вообще мне не ясно сколько потребуется PHP на определение статуса переменной
...
Рейтинг: 0 / 0
PHP что лучше if (isset(a['key')) или if (strpos($s, 'key'))
    #38816789
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сама оп себе isset() очень быстра. Если не ошибаюсь, ее работа не идет дальше просмотра таблицы переменных скрипта.

СтеллаАртуа
Код: sql
1.
if (strpos($s, 'слива') !== false) ...



А откуда берется переменная $s в реале? Ну не с потолка же. Возможно, имеется в виду что-то вроде
Код: php
1.
if (strpos(implode('', $a), 'слива') !== false)

?
Если так, то уже на этом этапе имеем вызов не одной, а двух функций. Ну да не важно. Сам алгоритм поиска подстроки в строке гораздо сложнее. Даже в Вашем варианте, с явно определенной строкой, потребуется запрос значения переменной, когда первое обращение идет к таблице переменных, и только потом сравнение цепочки байтов в указанном там фрагменте памяти с заданным шаблоном.
...
Рейтинг: 0 / 0
PHP что лучше if (isset(a['key')) или if (strpos($s, 'key'))
    #38818522
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так замерять в цикле 10000 итераций.

а вообще как верно сказали

isset($a);

пхп внутри хранит таблицу переменных по типу
$variables = array(
<hash_of_variable_name> => <link to memory>
)

и найти переменную, это пощитать её хеш от имени полного(включая область видимости её) и найти этот хеш в таблице

поиск же строки в подстроке, это циклом со смещением на один байт сканировать строку.


вопрос умный - действия похожие...но таблица с хешами проиндексирована, и опуская тонкости реализации, вопрос похож на - найти запись в таблице по полю с индексом и без.

да для таблиццы переменных надо хеш щитать, но ВНИМАНИЕ


для isset($a) мы ищем хеш в таблице этой переменной
для strpos($s, 'слива') !== false - мы тоже ищем в таблице этой же хеш другой переменной, и потом ещо по адрессу вытаскивать строку надо

для случая $a['fd'] б
насклько я помню, то в таблице хешей переменых лежит помимо самой $a сразу и хеши всех елементов массива - тоесть для $a['fd'] не будет ити поиск сначала самого масива, а потом его елемента, сразу будет ити поиск елемента как отдельной переменной.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP что лучше if (isset(a['key')) или if (strpos($s, 'key'))
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]