2010-05-28 3 views
1

У меня есть список значений, которые я должен проверить на наличие моего ввода против него.Самый быстрый способ проверить существование стоимости

Что является самым быстрым способом?

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

1.

$x=array('v'=>'','c'=>'','w'=>); 

.. 

.. 

array_key_exists($input,$x); 

2.

$x=array('v','c','w'); 

.. 

.. 

in_array($input,$x); 
+0

Почему бы не заглянуть в исходный код PHP, если вам действительно интересно, как работают внутренние элементы? –

+0

@Col. Шрапнель в конце концов я это сделаю, но я только начинаю изучать внутренности PHP, и я делаю это структурированным образом. Текущий вопрос исходил из моего аргумента. –

ответ

2

Как насчет isset($x[$input]), который, если подходит для ваших нужд, обычно бьет оба из представленных.

Из двух методов в вопросе array_key_exists имеет меньше работы, чем in_array, так что если вам нужно было выбирать только те два, то array_key_exists был бы им.

Кроме того: есть ли у вас какие-либо конкретные вопросы о «внутренностях»?

+0

isset еще быстрее? –

+0

@Itay isset is * shorter * –

+0

@Itay Moav, попробуйте его и посмотрите. В большинстве случаев это было бы. И это короче *, таким образом, сохраняя наши бедные, усталые пальцы. – salathe

0

в моем опыт, array_key_exists быстрее в 99% случаев, особенно по мере увеличения размера массива.

, что, как сказано, isset еще быстрее, так как он выполняет поиск хэша и поиск значения массива, хотя isset вернет false в пустые значения, как показано в вашем массиве примеров.

+0

'isset' отлично работает с« пустыми »значениями, хотя« NULL »будет иметь место, чтобы иметь в виду. – salathe

+0

пустая воля, а не isset не будет –

+0

чертовски, приятно поймать, не думал, когда я разместил это :) – Jason

Смежные вопросы