2010-07-05 3 views
1

Поскольку я читаю руководство по php для функций массива, я вижу, что некоторые функции массивов используют вызов по ссылке, тогда как некоторые используют вызов по значению. Например. array_slice использует вызов по значению, array_splice использует вызов по ссылке. Как я помню эти вещи, не ссылаясь на руководство и тем самым увеличивая свою производительность? Какую точную мысль разработчик php имел в виду, на каком основании он сделал некоторые функции, заставив нас передавать значения по значению, а некоторые - по ссылке? Это сделано беспорядочно?Любой простой способ определить, работают ли функции по ссылке или по вызову по значению?

Спасибо advanece :)

ответ

5

Как я помню эти вещи, не отсылая к руководству и тем самым повысить свою производительность?

Я нахожу, что проще всего иметь IDE, которая может предоставить вам информацию о ожидаемых параметрах по мере ввода.

Выполнено ли неуместно?

Возможно, или из-за отсутствия предвидения. К сожалению, функции массива PHP (и большая часть общей стандартной библиотеки) не имеют согласованности в именах и параметрах. Этот момент часто поднимают люди, критикующие PHP.

Помощь находится в пути в мире PHP 5. Например, посмотрите Array object. Он, похоже, не охватывает все функции массива, но, как указал Гордон в this comment, это хорошее начало.

+0

Спасибо, я думал, что я единственный, кто ненавидит php :(Но я вынужден учиться, поскольку он включен в учебную программу. – TCM

+0

@Nitesh Я вижу! Ну, в общем, я люблю PHP, но это возможно одна из его больших недостатков –

+0

Единственное преимущество, которое я вижу в PHP, - это просто узнать, но я ненавижу, что они создали 1000 глобальных функций. Ни один OOP не попадает ни на что. Я также ненавижу тот факт, что нет типа данных и мы можем использовать переменные, не объявляя об этом. Это дает огромную возможность введения ошибок. – TCM

3

Ну, честно говоря, я думаю, что большинству людей приходится время от времени ссылаться на руководство по php. Я не думаю, что ты все помнишь, а если можешь, тогда тебе хорошо.

Нет уверенного способа рассказать (не зная заранее), будет ли функция принимать ссылку или значение, поэтому вам нужно проверить руководство один раз в какое-то время.

1

Как писал xil3, большинство людей смотрят на ссылку (это то, за что они предназначены), когда они кодируют. У меня лично есть инструмент поиска php.net, установленный в Firefox. У меня также есть ключевое слово для поиска. Поэтому я могу просто ввести php array или php array_slice в адресную строку, и он автоматически отправит меня в Arrays page и the documentation for array_slice(). Аптана также дает вам подсказки о каждой функции, но они довольно короткие, по необходимости.

Как правило, функции, которые вы используете регулярно, вы будете помнить, как использовать. Те, которые вы не используете или не использовали в то время, вам просто нужно искать. Однако, как правило, большинство функций массива, которые являются для модификации массивов, как правило, передаются по реф, например:

array_pop() 
array_push() 
array_shift() 
array_unshift() 
array_walk() 
asort() 
array_multisort() 

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

// multiple array inputs 
array_diff() 
array_merge() 
array_combine() 
// extraction 
array_values() 
array_keys() 
array_unique() 
array_sum() 

конечно, есть некоторые, которые нарушают правила или иметь неоднозначные имена, как array_reverse(), и я часто все еще получаю array_map() и array_walk() спутать (последний по исх), но для через некоторое время он становится интуитивным.

Редактировать: Инструмент поиска PHP.net может быть found on MyCroft. Я использую один, обозначенный «PHP Function List - en» от Lucas.

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