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 » » Вопросы новичков » Как передать в функцию переменные и там их инициализировать?

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

1. Sanek_OS9 - 15 Июня, 2017 - 00:04:21 - перейти к сообщению
Как передать в функцию переменные и там их инициализировать при условии что передаваемые значения заранее не известны?
Например
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 тоже там объявилась
Должно получится
PHP:
скопировать код в буфер обмена
  1. list($user, $a, $b) = $array;

но это должно произойти автоматически
2. Строитель - 15 Июня, 2017 - 00:35:28 - перейти к сообщению
Sanek_OS9, вам нужно передавать в вызов функции заранее не известное количество аргументов?
3. Sanek_OS9 - 15 Июня, 2017 - 00:39:34 - перейти к сообщению
Помогли на другом ресурсе, выложу сюда может кому пригодится)
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, вам нужно передавать в вызов функции заранее не известное количество аргументов?

Да, именно так и есть, мне уже подсказали как это сделать, выше написал решение.
4. Строитель - 15 Июня, 2017 - 00:43:31 - перейти к сообщению
Sanek_OS9 пишет:
Да, именно так и есть
Ещё есть вариант func_get_args()
5. OrmaJever - 15 Июня, 2017 - 00:48:10 - перейти к сообщению
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);

 

Powered by ExBB FM 1.0 RC1