Я извлекаю многомерный php-массив (я думаю) из API, теперь все значения возвращаются идеально, и когда я дамп массива с print_r, я получаю следующее:
Event Object ( [title] => test [link] => google.com [updated] => 2013-03-06T12:08:56.521-05:00 [id] => test [name] => Copy of Copy of Copy of Mar 05, 2013 - TEST4 [description] => [registered] => 2 [createdDate] => 2013-03-06T12:08:56.521-05:00 [status] => COMPLETE [eventType] => OTHER [eventLocation] => EventLocation Object ( [location] => test [addr1] => test [addr2] => [addr3] => [city] => madrid [state] => andalucia [country] => [postalCode] => 06103 ) [registrationUrl] => https://google.com [startDate] => 2013-03-07T13:00:00-05:00 [endDate] => 2013-03-07T13:00:00-05:00 [publishDate] => 2013-03-06T12:11:15.958-05:00 [attendedCount] => 0 [cancelledCount] => 0 [eventFeeRequired] => FALSE [currencyType] => USD [paymentOptions] => Array ( ) [registrationTypes] => Array ( [0] => RegistrationType Object ( [name] => [registrationLimit] => [registrationClosedManually] => [guestLimit] => [ticketing] => [eventFees] => Array ( ) ) ) )
Теперь, столкнувшись с моим основным PHP, я обнаружил, что могу перечислять все первые элементы массива из [title] в [eventType] следующим образом:
<?php // get details for the first event returned $Event = $ConstantContact->getEventDetails($events['events'][0]); reset($Event); while (list($key, $value) = each($Event)) { echo "$key => $value \r\n<br/>"; } ?>
мой вопрос: все, что мне нужно сделать, это восстановить [title] и [startDate] Мне не нужны остальные, теперь я мог бы просто скрыть остальные, используя Js и css, но я уверен, что я просто идиот, и есть более простой способ пройти этот массив, чтобы он только выплескивал два значения, которые мне нужны. Как мне это сделать?
Вам не нужно проходить весь объект. Просто выберите нужные свойства:
$title = $Event->title; $startDate = $Event->startDate; // or echo $Event->title; echo $Event->startDate;
Это фактически объект, а не (ассоциативный) массив!
Какая разница?
Объект является экземпляром класса. Класс имеет методы и атрибуты (переменные-члены).
В отличие от C ++ или некоторых других языков ООП, вы можете определять атрибуты динамически, не объявляя их в объявлении класса.
Массив – это просто контейнер для ключей и их значений.
Кажется, что это не массив, а объект, что-то вроде этого:
echo $Event->title; echo $Event->startDate;
Это …
<?php // get details for the first event returned $Event = $ConstantContact->getEventDetails($events['events'][0]); reset($Event); echo $Event->$title . "<br/>"; echo $Event->$startDate . "<br/>"; ?>
? Или я слишком прост?