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. Alex_somebody - 04 Декабря, 2009 - 10:59:31 - перейти к сообщению
Доброе время суток! Проблема состоит в том что мне не удается правильно передать
двумерный массив в собственный класс. Идея такая - формирую массив где-нибудь с необходимым содержимым для отображения все моей страницы, передаю в класс его параметром и средствами класса строю то что нужно. Проблема - внутрь класса не получаеться его запихать.

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?
  4.  $new = array (
  5.              array (doc_name=>"MAIN_MENU", tpl_name =>"main_menu.tpl"),
  6.              array (doc_name=>"CONTENT", tpl_name =>"news.tpl"),
  7.              array (doc_name=>"SUB_MENU", tpl_name =>"sub_menu.tpl")
  8.               );
  9.  class  MY
  10.   {
  11.    var $my_array = array();
  12.  
  13.    function load($data =array() )  
  14.     {
  15.         unset ($this->my_array);
  16.         $this->my_array = array();
  17.          foreach ($data as $value)
  18.            {
  19.            array_push( $this->my_array, $value);
  20.            }
  21.         }
  22.   function show()
  23.     {
  24.          foreach ($this->my_array as $value)
  25.           echo $value['doc_name'].'<br>';
  26.  
  27.         }
  28.  
  29.  
  30.   }
  31.  $my = new MY;
  32.  $my->load($new);
  33.  $my->show;
  34.  unset ($my) ;
  35.  
  36. ?>
  37.  
  38.  
2. EuGen - 04 Декабря, 2009 - 11:03:10 - перейти к сообщению
Используйте простое присваивание.. Например:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. class MY
  4. {
  5.    var $my_array=array();
  6.    function __construct($rgData)
  7.    {
  8.       $this->my_array=$rgData;
  9.    }
  10.    function show()
  11.    {
  12.       print_r($this->rgData);
  13.    }
  14. }
  15. ?>
  16.  
3. Alex_somebody - 04 Декабря, 2009 - 11:10:26 - перейти к сообщению
результат на экране нулевой..... Внутри класса массив не заполнился, просто я совсем с нуля учу PHP. возможно что то делаю не так
4. EuGen - 04 Декабря, 2009 - 11:16:32 - перейти к сообщению
А как Вы использовали класс? То есть как Вы заполняете этот самый массив. Предполагается, что достаточно создания его экземпляра, а после уже показ этого массива. Кстати, в Вашем первоначальном коде Вы неправильно вызываете метод класса show. Все-таки, скобки там требуются в любом случае.
5. Alex_somebody - 04 Декабря, 2009 - 11:32:08 - перейти к сообщению
пока статически, чтобы посмотреть бедет ли это работать
(Добавление)
спасибо за помощь, так все тривиально было, мда. и кто я после этого.....
6. AstFreelancer - 05 Августа, 2011 - 18:46:32 - перейти к сообщению
EuGen пишет:
Используйте простое присваивание.. Например:
PHP:
скопировать код в буфер обмена


<?PHP
class MY
{
var $my_array=array();
function __construct($rgData)
{
$this->my_array=$rgData;
}
function show()
{
print_r($this->rgData);
}
}
?>

Не
, а
PHP:
скопировать код в буфер обмена
  1. print_r($this->my_array);
!

 

Powered by ExBB FM 1.0 RC1