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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Sanek_OS9
Отправлено: 15 Июня, 2017 - 00:04:21
Post Id



Гость


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


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




Как передать в функцию переменные и там их инициализировать при условии что передаваемые значения заранее не известны?
Например
PHP:
скопировать код в буфер обмена
  1. function test($a){
  2.     //юзаем переменную $a
  3. }
  4. $a = 5;
  5. test($a);
  6.  

Проблема в том что передаваться будут не только $a а и другие и использовать их нужно в таком виде в котором передал, если передам $user то в функции она должна быть доступна
Например
PHP:
скопировать код в буфер обмена
  1. function test($array)
  2. {
  3.     list($user, $a) = $array;
  4. }
  5. $a = 5;
  6. $user = 'Vasya';
  7. test([$user, $a]);
  8.  

Как заставить выше написанную ф-цию добавлять и другие переменные?
что бы если вызвал
PHP:
скопировать код в буфер обмена
  1. $a = 1;
  2. $user = 'Lusya';
  3. $b = 25;
  4. test([$user, $a, $b]);
  5.  

То $b тоже там объявилась
Должно получится

но это должно произойти автоматически

(Отредактировано автором: 15 Июня, 2017 - 00:05:33)

 
 Top
Строитель Модератор
Отправлено: 15 Июня, 2017 - 00:35:28
Post Id



Участник


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


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




Sanek_OS9, вам нужно передавать в вызов функции заранее не известное количество аргументов?
 
 Top
Sanek_OS9
Отправлено: 15 Июня, 2017 - 00:39:34
Post Id



Гость


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


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




Помогли на другом ресурсе, выложу сюда может кому пригодится)
PHP:
скопировать код в буфер обмена
  1. function test($params) {
  2.         extract($params);
  3.         unset($params);
  4.         var_dump($a, $b, $c, $d ?? '');
  5.         echo '=========================' . PHP_EOL;
  6. }
  7. $a = 1;
  8. $b = 'b';
  9. $c = 12.35;
  10. $data = [
  11.         'a' => $a,
  12.         'b' => $b,
  13.         'c' => $c
  14. ];
  15. test($data);
  16.  

(Добавление)
Строитель пишет:
Sanek_OS9, вам нужно передавать в вызов функции заранее не известное количество аргументов?

Да, именно так и есть, мне уже подсказали как это сделать, выше написал решение.
 
 Top
Строитель Модератор
Отправлено: 15 Июня, 2017 - 00:43:31
Post Id



Участник


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


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




Sanek_OS9 пишет:
Да, именно так и есть
Ещё есть вариант func_get_args()
 
 Top
OrmaJever Модератор
Отправлено: 15 Июня, 2017 - 00:48:10
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. function test(...$params) {
  2.  
  3.         var_dump($params);
  4.         echo '=========================' . PHP_EOL;
  5. }
  6. $a = 1;
  7. $b = 'b';
  8. $c = 12.35;
  9.  
  10. test($a, $b, $c);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB