Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Функции с переменным числом параметров
Форумы портала PHP.SU » » Вопросы новичков » Функции с переменным числом параметров

Страниц (2): [1] 2 »
 

1. loleg - 22 Мая, 2014 - 14:05:01 - перейти к сообщению
Всем привет!
Помогите разобраться!Как написать пользовательскую функцию с переменным числом параметров, так чтобы, аргументы передавались по ссылке?
2. Мелкий - 22 Мая, 2014 - 14:23:58 - перейти к сообщению
Возможно, рефлексией можно.
А зачем? По ссылке передавать чем меньше тем лучше, это сложно сопровождать.
3. Flash_PR - 22 Мая, 2014 - 14:24:11 - перейти к сообщению
loleg пишет:
Помогите разобраться!Как написать пользовательскую функцию с переменным числом параметров

PHP:
скопировать код в буфер обмена
  1.  
  2. function test()
  3. {
  4. $args = func_get_args(); //массив переданных аргументов в функцию. Делай с ними что хочешь.
  5. }
  6.  
4. loleg - 22 Мая, 2014 - 14:31:47 - перейти к сообщению
Flash_PR пишет:
loleg пишет:
Помогите разобраться!Как написать пользовательскую функцию с переменным числом параметров

PHP:
скопировать код в буфер обмена
  1.  
  2. funcion test()
  3. {
  4. $args = func_get_args(); //массив переданных аргументов в функцию. Делай с ними что хочешь.
  5. }
  6.  

Функция func_get_args() возвращает массив, в котором каждый элемент является копией соответствующего члена списка аргументов пользовательской функции,а мне нужна ссылка на внешнюю переменную
(Добавление)
Мелкий пишет:
Возможно, рефлексией можно.
А зачем? По ссылке передавать чем меньше тем лучше, это сложно сопровождать.

Я только начал изучать PHP. Сейчас пытаюсь разобраться в функциях,поэтому и спрашиваю.
5. esterio - 22 Мая, 2014 - 14:40:21 - перейти к сообщению
loleg пишет:
Я только начал изучать PHP. Сейчас пытаюсь разобраться в функциях,поэтому и спрашиваю.

Плохая практика передача параметров по ссылке (кроме обьектов конешно, которые всегда передаються по ссылке).
6. Ch_chov - 22 Мая, 2014 - 14:50:11 - перейти к сообщению
esterio пишет:
Плохая практика передача параметров по ссылке

Это почему? Очень даже хорошая практика, если нужно обработать многокилобайтный массив. Многие встроенные в php функции, принимают параметры по ссылке.
7. Мелкий - 22 Мая, 2014 - 14:51:46 - перейти к сообщению
loleg пишет:
только начал изучать PHP

loleg пишет:
нужна ссылка на внешнюю переменную

Не нужна совершенно точно. Первоначальную цель достигаете неверным путём.
8. esterio - 22 Мая, 2014 - 15:17:01 - перейти к сообщению
Ch_chov
Надеюсь Вы читали статью на хабре про "фрактал плохого дизайна". В большинстве случаев изменение переменной может быть критической. Скажем Если я и хочу ее изменить, то я скорее всего сделаю замену значения из возвращаемого результата функции.
ЗЫ. Конешно есть моменты где оправдиваеться передача по ссылке. Но я говорю про большинство случаев. И не думаю что ТС идет верным путем изначально
9. loleg - 22 Мая, 2014 - 15:18:48 - перейти к сообщению
Ребята! У меня вопрос не зачем а как!Это не практический вопрос! Данная задача из задачника имеет решение или нет?
10. esterio - 22 Мая, 2014 - 15:31:43 - перейти к сообщению
Ответ скорее никак
11. EuGen - 22 Мая, 2014 - 15:34:02 - перейти к сообщению
RFC / PHP 5.6 пишет:
https://wiki.php.net/rfc/variadics

Спойлер (Отобразить)
12. OrmaJever - 22 Мая, 2014 - 15:39:33 - перейти к сообщению
esterio пишет:
Плохая практика передача параметров по ссылке

на очень популярном и известном js абсолютно все переменные передаются по ссылке, и по значению передать не получится. Так что практика не очень то и плохая Подмигивание
13. loleg - 22 Мая, 2014 - 15:45:43 - перейти к сообщению
EuGen пишет:
<a href='http://docs.php.net/manual/en/mi...php'>RFC / PHP 5.6</a> пишет:
https://wiki.php.net/rfc/variadics

Спойлер (Отобразить)

Спасибо за помощь !
14. Ch_chov - 22 Мая, 2014 - 16:00:26 - перейти к сообщению
esterio пишет:
Надеюсь Вы читали статью на хабре про "фрактал плохого дизайна". В большинстве случаев изменение переменной может быть критической.
А что это значит "быть критическим"?
Статью, только до половины дочитал. Радость

OrmaJever пишет:
на очень популярном и известном js абсолютно все переменные передаются по ссылке, и по значению передать не получится.
Простые типы в js передаются по значению.
15. esterio - 22 Мая, 2014 - 16:11:39 - перейти к сообщению
Ch_chov
PHP:
скопировать код в буфер обмена
  1. function foo(&$bar)
  2. {
  3.         $bar = null;
  4. }
  5.  
  6. $baz = array(1, 2, 3);
  7. foo($baz);
  8.  
  9. foreach($baz as $k=>$v) // $baz уже не массив
  10. {
  11.         echo $v;
  12. }


А также не надо забывать про Copy On Write

 

Powered by ExBB FM 1.0 RC1