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]   

> Без описания
imedia
Отправлено: 07 Июля, 2015 - 15:27:18
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


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




Есть такой объект
PHP:
скопировать код в буфер обмена
  1.  
  2. object(Search)#15 (4) {
  3.  ["fromStation"]=>
  4.   string(7) "2000000"
  5.   ["toStation"]=>
  6.   string(7) "2024120"
  7.   ["departDate"]=>
  8.   string(5) "30.08"
  9.   ["finArr"]=>
  10.   array(12) {
  11.     ["FROM"]=>
  12.     string(12) "Москва"
  13.     ["UIC"]=>
  14.     string(7) "2000000"
  15.     ["TO"]=>
  16.     string(29) "Санкт Петербург"
  17.     ["UIC2"]=>
  18.     string(7) "2024120"
  19.     ["N0"]=>
  20.     string(27) "Красная Стрела"
  21.     ["N1"]=>
  22.     string(3) "132"
  23.     ["KN"]=>
  24.     string(4) "СК"
  25.     ["D"]=>
  26.     string(5) "30.08"
  27.     ["T1"]=>
  28.     string(5) "00:15"
  29.     ["D1"]=>
  30.     string(5) "30.08"
  31.     ["T4"]=>
  32.     string(5) "23:32"
  33.     ["T3"]=>
  34.     string(5) "23:17"
  35.   }
  36. }
  37.  

как достать в массив его элемент ['finArr']?
 
 Top
Мелкий Супермодератор
Отправлено: 07 Июля, 2015 - 15:37:56
Post Id



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


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


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




Посмотрите реализацию этого класса (или документацию к нему, если она есть и актуальна).
Мало того, что это будет правильно - может у класса есть специальный метод для получения этих данных, так ещё с PHP5.6 var_dump может искажать состояние объекта.


-----
PostgreSQL DBA
 
 Top
esterio
Отправлено: 07 Июля, 2015 - 15:42:24
Post Id



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


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


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




Мелкий пишет:
ещё с PHP5.6 var_dump может искажать состояние объекта.

Я видимо что-то упустил. Как именно он может искажать?
 
 Top
Мелкий Супермодератор
Отправлено: 07 Июля, 2015 - 15:49:09
Post Id



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


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


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




Через __debugInfo
Цитата:
melkij@melkij:~$ php-5.5.26 -f test.php
object(search)#1 (1) {
["attr":"search":private]=>
string(3) "foo"
}
melkij@melkij:~$ php-5.6.10 -f test.php
object(search)#1 (1) {
["attr2"]=>
string(3) "foo"
}
melkij@melkij:~$ cat test.php
<?php
class search {
private $attr = 'foo';
public function __debugInfo() {
return ['attr2' => $this->attr];
}
}

$a = new search;
var_dump($a);

Как-то так это выглядит.


-----
PostgreSQL DBA
 
 Top
imedia
Отправлено: 07 Июля, 2015 - 16:00:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


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




Мелкий пишет:
Посмотрите реализацию этого класса (или документацию к нему, если она есть и актуальна).
Мало того, что это будет правильно - может у класса есть специальный метод для получения этих данных, так ещё с PHP5.6 var_dump может искажать состояние объекта.

Нет там документации никакой это я его написал, вот он
PHP:
скопировать код в буфер обмена
  1.  
  2. Class Search  {//Этот класс является интерфейсом предназначенным для обхода значений массива и поиска в нем заданных значений
  3.         public $fromStation; //Содержит uic код станции отправления (это железнодорожный код станции, состоящий из 7 цифр)
  4.         public $toStation; //Содержит uic код станции прибытия
  5.        
  6.         /** @var DateTime */
  7.         public $departDate;
  8.         public $finArr;
  9.         public function __construct($obj){
  10.         $this->fromStation=$obj['incoming']['fromStation'];
  11.         $this->toStation=$obj['incoming']['toStation'];
  12.        
  13.         $this->departDate=$obj['incoming']['departDate'];
  14.         //обойти массив из xml в поисках incoming ?from=2000000&to=2024120&month=05&day=07
  15.         foreach ($obj['arr_from_xml']['TRAIN'] as $key=>$val){
  16.         if($val['UIC']==$this->fromStation and $val['UIC2']==$this->toStation and $val['UIC2']==$obj['incoming']['toStation'] and $val['D']==$this->departDate)
  17.         {
  18.         $fin_arr=$val;
  19.         }
  20.         }
  21.         $this->finArr=$fin_arr;
  22.        
  23.         }
  24.        
  25.        
  26. }
  27.  
  28.  

(Добавление)
просто хочется знать как из объекта массив достать
 
 Top
Мелкий Супермодератор
Отправлено: 07 Июля, 2015 - 16:04:49
Post Id



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


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


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




imedia пишет:
это я его написал,

Серьёзно? И не знаете, как обращаться к свойствам своего же класса? Однако


-----
PostgreSQL DBA
 
 Top
imedia
Отправлено: 07 Июля, 2015 - 16:17:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


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




Мелкий пишет:
imedia пишет:
это я его написал,

Серьёзно? И не знаете, как обращаться к свойствам своего же класса? Однако

Серьезно не знаю, вот и учусь

(Отредактировано автором: 07 Июля, 2015 - 16:17:43)

 
 Top
Мелкий Супермодератор
Отправлено: 07 Июля, 2015 - 16:28:23
Post Id



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


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


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






-----
PostgreSQL DBA
 
 Top
imedia
Отправлено: 07 Июля, 2015 - 17:07:47
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


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




Мелкий пишет:
http://php.net/manual/en/languag...5.properties.php
http://php.net/manual/en/language.oop5.visibility.php

Ну и что мне это дает, я помоему легкий вопрос для вас задал а вы мне азы переменные область видимости, у меня в задании именно такое образование объекта с указанием типа входного аргумента, а как массив вытащить я найти не могу
 
 Top
Мелкий Супермодератор
Отправлено: 07 Июля, 2015 - 17:14:53
Post Id



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


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


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




imedia пишет:
вот и учусь

Вот и учитесь. Начните с азов. Начните с самого начала и по порядку.
Ответ элементарен и содержится даже в (якобы) вашем собственном коде. Да, я верю, что этот код написал какой-то новичок, нет, я не верю, что этот новичок - вы.


-----
PostgreSQL DBA
 
 Top
imedia
Отправлено: 07 Июля, 2015 - 17:26:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


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




Вам что трудно подсказать, я не нашел ответа в документации которую вы предоставили.
Укажите пожалуйста на ответ, я так усваиваю информацию быстрее ) Вы к сожалению не мой преподаватель

(Отредактировано автором: 07 Июля, 2015 - 17:27:08)

 
 Top
esterio
Отправлено: 07 Июля, 2015 - 18:08:56
Post Id



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


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


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




imedia пишет:
public $finArr;

Должно натолкнуть вас
Мелкий пишет:
Через __debugInfo

Думал о чем то другом правда. А так да знал, но надеюсь никто использовать такое в реальном коде не станет
 
 Top
imedia
Отправлено: 07 Июля, 2015 - 22:58:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 192
Дата рег-ции: Июль 2015  


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




esterioЯ вас не понял
 
 Top
andrewkard
Отправлено: 08 Июля, 2015 - 00:42:25
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


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




imedia
Наберите в Google "php обратиться к свойству класса". Первая же ссылка дает ответ на Ваш вопрос:
PHP:
скопировать код в буфер обмена
  1.  
  2. $obj_search=new Search();
  3. var_dump( $obj_search->finArr );
  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