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]   

> Без описания
dima2308
Отправлено: 03 Января, 2019 - 18:21:11
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2019  


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




Добрый день.
Имеется функция, подключающая файлы и принимающая данные.
PHP:
скопировать код в буфер обмена
  1. functions.php
  2. <?PHP
  3.     function renderTemplate($template_path, $template_data)
  4.     {
  5.         ob_start();
  6.         if (file_exists($template_path)) {
  7.             require_once "$template_path";
  8.         } else {
  9.             return "Файл $template_path не найден";
  10.         }
  11.         $content = ob_get_clean();
  12.         return $content;
  13.     }
  14. ?>

Подключаю этот файл в index.html, передаю функции путь к файлу и, для примера, одну переменную, которую хочу использовать в нем.
PHP:
скопировать код в буфер обмена
  1.  
  2. index.php
  3. <?PHP
  4.     require_once "functions.php";
  5.  
  6.     $var = "Привет";
  7.  
  8.     $page_content = renderTemplate('temp.php', [
  9.         'info' => $var]);
  10.     print($page_content);
  11. ?>

И теперь в самом файле temp.php пытаюсь обратиться к переменной $var.

Но ничего не выводится.
Это краткий пример для отображения сути проблемы.
Как всё же обратиться к переменной такой?
 
 Top
Мелкий Супермодератор
Отправлено: 03 Января, 2019 - 23:38:31
Post Id



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


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


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




Почему вы пытаетесь обратиться к $var? Откуда эта переменная должна взяться в вашем коде внутри renderTemplate?


-----
PostgreSQL DBA
 
 Top
dima2308
Отправлено: 04 Января, 2019 - 06:56:40
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2019  


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




Я ведь с помощью renderTemplate подключаю внешний файл и массивом передаю переменные.
 
 Top
Мелкий Супермодератор
Отправлено: 04 Января, 2019 - 12:02:31
Post Id



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


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


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




dima2308 пишет:
и массивом передаю переменные.

Это как?
В вызов функции вы передаёте массив. Массив вам и доступен.
Вероятно какой-нибудь extract хотели сделать.
Но даже при наличии extract это не отвечает на вопрос, откуда должна взяться $var. $info с копией $var получить можно, а вот $var - нет такого.


-----
PostgreSQL DBA
 
 Top
dima2308
Отправлено: 04 Января, 2019 - 16:06:25
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2019  


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




В источнике, откуда брал пример, именно напрямую обращались и все работало...
Я нашел способ такой:

Значение выводит.
Но проблема теперь несколько в другом.
Имеется такой массив, который я также передаю в функцию.
PHP:
скопировать код в буфер обмена
  1.  
  2. $info = [
  3.     0 => [
  4.         'name' => '2014 Rossignol District',
  5.         'categorie' => 'Доски и лыжи',
  6.         'price' => '10990',
  7.         'url' => 'img/lot-1.jpg'
  8.     ],
  9.     1 => [
  10.         'name' => 'DC Ply Mens 2016/2017',
  11.         'categorie' => 'Доски и лыжи',
  12.         'price' => '159999',
  13.         'url' => 'img/lot-2.jpg'
  14.     ],
  15.     2 => [
  16.         'name' => 'DC Ply Mens 2016/2017',
  17.         'categorie' => 'Крепления',
  18.         'price' => '159999',
  19.         'url' => 'img/lot-3.jpg'
  20.     ],
  21.     3 => [
  22.         'name' => 'Ботинки для сноуборда',
  23.         'categorie' => 'Ботинки',
  24.         'price' => '40000',
  25.         'url' => 'img/lot-4.jpg'
  26.     ]
  27.  

В основном файле обрабатываю его таким способом:
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($i = 0; $i < count($info); $i++) {
  3.     echo $info[$i]['name'].'<br>';
  4. }
  5.  

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

(Отредактировано автором: 04 Января, 2019 - 16:07:08)

 
 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