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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функции с переменным числом параметров

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
loleg
Отправлено: 22 Мая, 2014 - 14:05:01
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




Всем привет!
Помогите разобраться!Как написать пользовательскую функцию с переменным числом параметров, так чтобы, аргументы передавались по ссылке?
 
 Top
Мелкий Супермодератор
Отправлено: 22 Мая, 2014 - 14:23:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Возможно, рефлексией можно.
А зачем? По ссылке передавать чем меньше тем лучше, это сложно сопровождать.


-----
PostgreSQL DBA
 
 Top
Flash_PR
Отправлено: 22 Мая, 2014 - 14:24:11
Post Id



Посетитель


Покинул форум
Сообщений всего: 328
Дата рег-ции: Окт. 2013  
Откуда: Санкт-Петербург


Помог: 6 раз(а)




loleg пишет:
Помогите разобраться!Как написать пользовательскую функцию с переменным числом параметров

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

(Отредактировано автором: 22 Мая, 2014 - 14:30:25)



-----
Умные мысли приходят тогда, когда все глупости уже сделаны...
 
My status
 Top
loleg
Отправлено: 22 Мая, 2014 - 14:31:47
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




Flash_PR пишет:
loleg пишет:
Помогите разобраться!Как написать пользовательскую функцию с переменным числом параметров

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

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

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



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




loleg пишет:
Я только начал изучать PHP. Сейчас пытаюсь разобраться в функциях,поэтому и спрашиваю.

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



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




esterio пишет:
Плохая практика передача параметров по ссылке

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



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




loleg пишет:
только начал изучать PHP

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

Не нужна совершенно точно. Первоначальную цель достигаете неверным путём.


-----
PostgreSQL DBA
 
 Top
esterio
Отправлено: 22 Мая, 2014 - 15:17:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Ch_chov
Надеюсь Вы читали статью на хабре про "фрактал плохого дизайна". В большинстве случаев изменение переменной может быть критической. Скажем Если я и хочу ее изменить, то я скорее всего сделаю замену значения из возвращаемого результата функции.
ЗЫ. Конешно есть моменты где оправдиваеться передача по ссылке. Но я говорю про большинство случаев. И не думаю что ТС идет верным путем изначально
 
 Top
loleg
Отправлено: 22 Мая, 2014 - 15:18:48
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




Ребята! У меня вопрос не зачем а как!Это не практический вопрос! Данная задача из задачника имеет решение или нет?

(Отредактировано автором: 22 Мая, 2014 - 15:29:18)

 
 Top
esterio
Отправлено: 22 Мая, 2014 - 15:31:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Ответ скорее никак
 
 Top
EuGen Администратор
Отправлено: 22 Мая, 2014 - 15:34:02
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




RFC / PHP 5.6 пишет:
https://wiki.php.net/rfc/variadics

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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
OrmaJever Модератор
Отправлено: 22 Мая, 2014 - 15:39:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




esterio пишет:
Плохая практика передача параметров по ссылке

на очень популярном и известном js абсолютно все переменные передаются по ссылке, и по значению передать не получится. Так что практика не очень то и плохая Подмигивание


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
loleg
Отправлено: 22 Мая, 2014 - 15:45:43
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Май 2014  


Помог: 0 раз(а)




EuGen пишет:
<a href='http://docs.php.net/manual/en/mi...php'>RFC / PHP 5.6</a> пишет:
https://wiki.php.net/rfc/variadics

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

Спасибо за помощь !
 
 Top
Ch_chov
Отправлено: 22 Мая, 2014 - 16:00:26
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




esterio пишет:
Надеюсь Вы читали статью на хабре про "фрактал плохого дизайна". В большинстве случаев изменение переменной может быть критической.
А что это значит "быть критическим"?
Статью, только до половины дочитал. Радость

OrmaJever пишет:
на очень популярном и известном js абсолютно все переменные передаются по ссылке, и по значению передать не получится.
Простые типы в js передаются по значению.

(Отредактировано автором: 22 Мая, 2014 - 16:04:41)

 
 Top
esterio
Отправлено: 22 Мая, 2014 - 16:11:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




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
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB