Ввод в таблицу из сложного массива с использованием php

SimpleXMLElement Object ( [@attributes] => Array ( [version] => 2.0 ) [channel] => SimpleXMLElement Object ( [title] => Yahoo!ニュース・トピックス - トップ [link] => http://news.yahoo.co.jp/ [description] => aa [language] => ja [pubDate] => Mon, 17 Aug 2015 10:20:57 +0900 [item] => Array ( [0] => SimpleXMLElement Object ( [title] => aa [link] => aa [pubDate] => aa [enclosure] => SimpleXMLElement Object ( [@attributes] => Array ( [length] => 133 [url] => http://img.ruphp.com/database/photo.gif [type] => image/gif ) [0] => ) [guid] => yahoo/news/topics/6170952 ) [1] => SimpleXMLElement Object ( [title] => bb [link] => bb [pubDate] => bb [enclosure] => SimpleXMLElement Object ( [@attributes] => Array ( [length] => 133 [url] => http://img.ruphp.com/database/photo.gif [type] => image/gif ) [0] => ) [guid] => yahoo/news/topics/6170951 ) 

У меня этот массив, который очень запутан для меня как новичок. Я просто хочу поместить title, link and pubDate из 0=> SimpleXMLELement Object и 1 => SimpleXMLElement Object который содержит aa и bb в моей таблице, извлеченной из mysql.

Моя таблица выглядит так:

  Title PubDate Link 

и я хочу поставить «aa» и «bb» под каждым из названий в таблице.

Вот что я пробовал:

  foreach($con as $key => $val){ while($key == title){ $Title['title'] = $val; } return $Title['title']; } 

То, что я пытался сделать, – это пометить ключи и значения с помощью $key и $val , а когда $key = title , я хотел поместить все заголовки в один массив, но, к сожалению, это не сработало.

Предполагая, что $ xmlStructure – это структура, опубликованная выше, ваш код должен выглядеть примерно так:

 $items = $xmlStructure->channel->item; $table = []; foreach ($items as $item) { $table[] = [ 'title' => $item->title, 'pubDate' => $item->pubDate, 'link' => $item->link; ]; } 

В конце этого ваш массив $ table будет содержать массив сущностей, каждый из которых содержит три поля.

Затем построение таблицы HTML (или таблицы другого типа) должно быть довольно простым.

Попробуй это:

  $array_to_get = ['title', 'link', 'pubDate']; $newArray = []; $con = $xmlStructure->channel->item; //Object from xml foreach($con as $key => $val){ if(in_array($key, $array_to_get)){ $newArray['title'] = $val->title; $newArray['link'] = $val->link; $newArray['pubDate'] = $val->pubDate; } } print_r($newArray); 

Фактически, этот массив не является сложным вообще, как только вы начинаете понимать, что происходит и как его структурированный он будет продолжать превращаться в кусок пирога с течением времени. Вместо того чтобы я показывал вам, что делать, я собираюсь подробно объяснить, как читать такой массив и как это сделать, и таким образом вы будете знать, что делать в будущем.

Например, скажем, вы хотите получить доступ к значению версии в этой части массива:

 SimpleXMLElement Object ( [@attributes] => Array ( [version] => 2.0 ) ) 

Сначала вы бы сохранили это в переменной, и каждый уровень под массивом был настроен так и сказал, что этот массив хранится в $ container

 //with @attributes you access it as a function, anything with @ is access as a function, example below. $version = $container->attributes()->['version'] 

теперь говорите, что хотите получить доступ к названию, ссылке, публике и т. д.

вы бы сделали

 $title = $container->channel->title; $link = $container->channel->link; $description = $container->channel->description //notice how after channel i used it as an object instead of an array , its because after channel it mentions that its an SimpleXMLElement Object. 

Теперь скажите, что вы хотите получить доступ к каждому элементу под элементом, где он имеет значения, начиная с 0.

 $collection = $container->channel->item; 

теперь это содержит все элементы элемента. Чтобы доказать это, просто выполните print_r ($ collection), и вы увидите коллекцию возвращаемых вами данных и для получения вывода своей коллекции вы можете просто сделать простой цикл foreach, чтобы получить все значения, как показано:

 foreach($collection as $items) { echo 'Title: ' . $items->title . '<br/>'; echo 'Link: ' . $items->link . '<br/>'; echo 'Pubdate' . $items->pubDate . '<br/>'; //and so on } 

Как только вы это поймете, вы можете создать свою таблицу или что-то еще, что вам нужно сделать, но вы должны сначала понять, как читать такие массивы.