За последние 24 часа нас посетил 57281 программист и 1809 роботов. Сейчас ищут 946 программистов ...

Массив и класс

Тема в разделе "Прочие вопросы по PHP", создана пользователем Kos, 21 июн 2008.

  1. Kos

    Kos Активный пользователь

    С нами с:
    30 авг 2007
    Сообщения:
    51
    Симпатии:
    1
    есть ли способ заполнить массив в нутри класса т.е. к массиву с индексом 1 присваивалась переменная $la которая нахотися внутри класса. если есть способ напиши пожалуйста примерчик.
    PHP:
    1. class template{
    2.     var $file;
    3.  
    4.  
    5.     function set_file_name($file)
    6.     {
    7.         $la = "kos";
    8.         echo $file['1'];
    9.     }
    10.  
    11. }
    12. $template = new template();
    13.  
    14.  
    15. $template->set_file_name(array('1'=> $la));
     
  2. NOmeR1

    NOmeR1 Активный пользователь

    С нами с:
    11 май 2008
    Сообщения:
    97
    Симпатии:
    0
    Почему бы не сделать так?
    Код (Text):
    1. <?php
    2. class template{
    3.     var $file;
    4.     var $la = "kos";
    5.     function set_file_name($file) {
    6.         echo $file['1'];
    7.     }
    8. }
    9. $template = new template();
    10. $template->set_file_name(array('1' => $template->la));
    11. ?>
     
  3. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    PHP:
    1. <?php
    2. class template{
    3.     public $file = array();
    4.     protected $variable = '';
    5.     function __constructor(){
    6.         $this->file[] = $this->variable;
    7.     }
    8. }
    9. $template = new template;
    10. ?>
    only PHP5
     
  4. ИвановНаОстановке

    ИвановНаОстановке Активный пользователь

    С нами с:
    21 июн 2008
    Сообщения:
    7
    Симпатии:
    0
    Значение переменной должно присваиваться в конструкторе класса, или быть константой (к классам имеющим опосредованное отношение) Я не прав? (Я старый, очень старый - в моей юности было именно так:)
     
  5. Kos

    Kos Активный пользователь

    С нами с:
    30 авг 2007
    Сообщения:
    51
    Симпатии:
    1
    да должна в нутри класса
     
  6. mclaud

    mclaud Активный пользователь

    С нами с:
    15 фев 2007
    Сообщения:
    97
    Симпатии:
    0
    Адрес:
    Одесса
    Первый вариант: передача переменной по ссылке:
    PHP:
    1. <?php
    2. class example {
    3.  
    4.      function my(&$value) {
    5.           $la = 'new value';
    6.           $value = $la;
    7.      }
    8. }
    9.  
    10. $myvalue = 'old value'
    11. $myclass = new  example();
    12. echo $myvalue; // output: old value
    13. $myclass->my($myvalue);
    14. echo $myvalue; // output: new value
    15. ?>
    Второй вариант: возврат значений:
    PHP:
    1. <?php
    2. class example {
    3.  
    4.      function my() {
    5.           return 'new value';
    6.      }
    7. }
    8.  
    9. $myvalue = 'old value'
    10. $myclass = new  example();
    11. echo $myvalue; // output: old value
    12. $myvalue = $myclass->my();
    13. echo $myvalue; // output: new value
    14. ?>
     
  7. Kos

    Kos Активный пользователь

    С нами с:
    30 авг 2007
    Сообщения:
    51
    Симпатии:
    1
    вобщем вот мой класс надо

    Код (Text):
    1. $array = array("{NAME}" => $f['name'],
    2.                         "{ID}" => $f['id'];
    вынести за пределы класса но переменные $f['name'] и $f['id'] принимали значения так как еслибы они были внутри класса

    Код (Text):
    1. <?php
    2. class template{
    3.     var $tm_file;
    4.  
    5.     function assign_block_for($name, $count, $result, $array)
    6.     {
    7.         $string = $this->tm_file;
    8.         $str1 = strpos($string,"<!-- FOR ".$name." -->");
    9.         $str2 = strpos($string,"<!-- END_FOR ".$name." -->");
    10.         $str3 = strlen("<!-- END_FOR ".$name." -->");
    11.         $str = $str2+$str3-$str1;
    12.         $string_c = substr($string, $str1, $str);
    13.         for ($i=0; $i < $count; $i++){
    14.             $f = mysql_fetch_array($result);
    15.             $r = fmod($i, 2);
    16.             if ($r==0){$style="lay";}else{$style="lay1";}
    17.             $array = array("{NAME}" => $f['name'],
    18.                                 "{ID}" => $f['id'];
    19.  
    20.             $string_e = $string_e.$string_c;
    21.             $string_e = str_replace(array_keys ($array), array_values($array), $string_e);
    22.         }
    23.         $this->tm_file = substr_replace($string, $string_e, $str1, $str);
    24.     }
    25. }
    26. $template = new template();
    27. ?>
     
  8. mclaud

    mclaud Активный пользователь

    С нами с:
    15 фев 2007
    Сообщения:
    97
    Симпатии:
    0
    Адрес:
    Одесса
    Задача, если честно, не ясна.
    Если тебе нужен $array вне класса, так верни его по ссылке в основной код.
    Если тебе надо его наполнять из массива $f вне класса тогда:
    PHP:
    1.  
    2. <?php
    3. class template{
    4.    var $tm_file;
    5.    var $f
    6.    function assign_block_for($name, $count, $result)
    7.    {
    8.       $string = $this->tm_file;
    9.       $str1 = strpos($string,"<!-- FOR ".$name." -->");
    10.       $str2 = strpos($string,"<!-- END_FOR ".$name." -->");
    11.       $str3 = strlen("<!-- END_FOR ".$name." -->");
    12.       $str = $str2+$str3-$str1;
    13.       $string_c = substr($string, $str1, $str);
    14.       for ($i=0; $i < $count; $i++){
    15.          $this->f = mysql_fetch_array($result);
    16.          $r = fmod($i, 2);
    17.          if ($r==0){$style="lay";}else{$style="lay1";}
    18.          $string_e = $string_e.$string_c;
    19.          $string_e = str_replace(array_keys ($array), array_values($array), $string_e);
    20.       }
    21.       $this->tm_file = substr_replace($string, $string_e, $str1, $str);
    22.    }
    23. }
    24. $template = new template();
    25. $array = array("{NAME}" => $template->f['name'], "{ID}" => $template->f['id']);
    26.  
    27. ?>
    28.