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. imedia - 07 Июля, 2015 - 15:27:18 - перейти к сообщению
Есть такой объект
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']?
2. Мелкий - 07 Июля, 2015 - 15:37:56 - перейти к сообщению
Посмотрите реализацию этого класса (или документацию к нему, если она есть и актуальна).
Мало того, что это будет правильно - может у класса есть специальный метод для получения этих данных, так ещё с PHP5.6 var_dump может искажать состояние объекта.
3. esterio - 07 Июля, 2015 - 15:42:24 - перейти к сообщению
Мелкий пишет:
ещё с PHP5.6 var_dump может искажать состояние объекта.

Я видимо что-то упустил. Как именно он может искажать?
4. Мелкий - 07 Июля, 2015 - 15:49:09 - перейти к сообщению
Через __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);

Как-то так это выглядит.
5. imedia - 07 Июля, 2015 - 16:00:57 - перейти к сообщению
Мелкий пишет:
Посмотрите реализацию этого класса (или документацию к нему, если она есть и актуальна).
Мало того, что это будет правильно - может у класса есть специальный метод для получения этих данных, так ещё с 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.  

(Добавление)
просто хочется знать как из объекта массив достать
6. Мелкий - 07 Июля, 2015 - 16:04:49 - перейти к сообщению
imedia пишет:
это я его написал,

Серьёзно? И не знаете, как обращаться к свойствам своего же класса? Однако
7. imedia - 07 Июля, 2015 - 16:17:10 - перейти к сообщению
Мелкий пишет:
imedia пишет:
это я его написал,

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

Серьезно не знаю, вот и учусь
8. Мелкий - 07 Июля, 2015 - 16:28:23 - перейти к сообщению
http://php.net/manual/en/languag...5.properties.php
http://php.net/manual/en/languag...5.visibility.php
9. imedia - 07 Июля, 2015 - 17:07:47 - перейти к сообщению
Мелкий пишет:
http://php.net/manual/en/languag...5.properties.php
http://php.net/manual/en/language.oop5.visibility.php

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

Вот и учитесь. Начните с азов. Начните с самого начала и по порядку.
Ответ элементарен и содержится даже в (якобы) вашем собственном коде. Да, я верю, что этот код написал какой-то новичок, нет, я не верю, что этот новичок - вы.
11. imedia - 07 Июля, 2015 - 17:26:41 - перейти к сообщению
Вам что трудно подсказать, я не нашел ответа в документации которую вы предоставили.
Укажите пожалуйста на ответ, я так усваиваю информацию быстрее ) Вы к сожалению не мой преподаватель
12. esterio - 07 Июля, 2015 - 18:08:56 - перейти к сообщению
imedia пишет:
public $finArr;

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

Думал о чем то другом правда. А так да знал, но надеюсь никто использовать такое в реальном коде не станет
13. imedia - 07 Июля, 2015 - 22:58:10 - перейти к сообщению
esterioЯ вас не понял
14. andrewkard - 08 Июля, 2015 - 00:42:25 - перейти к сообщению
imedia
Наберите в Google "php обратиться к свойству класса". Первая же ссылка дает ответ на Ваш вопрос:
PHP:
скопировать код в буфер обмена
  1.  
  2. $obj_search=new Search();
  3. var_dump( $obj_search->finArr );
  4.  

 

Powered by ExBB FM 1.0 RC1