Я интегрирую XML-файл из RSS-канала в одну из моих страниц WordPress.Файл выглядит примерно так:
<jobs>
<job>
<jobId>1</jobId>
<jobTitle>Title #1</jobTitle>
<jobType>Permanent</jobType>
<jobPlace>Place #1</jobPlace>
</job>
<job>
<jobId>2</jobId>
<jobTitle>Title #2</jobTitle>
<jobType>Part Time</jobType>
<jobPlace>Place #2</jobPlace>
</job>
<job>
<jobId>3</jobId>
<jobTitle>Title #3</jobTitle>
<jobType>Part Time</jobType>
<jobPlace>Place #1</jobPlace>
</job>
</jobs>
Так что это должно быть довольно просто, верно?Я использовал следующее для извлечения и отображения информации:
$xml = simplexml_load_file($url);
$items = json_decode(json_encode($xml), true);
$items = $items['job'];
$types = array();
$locations = array();
foreach($items as $value) {
if(!isset($new_items[$value['jobPlace']])) {
$location[$value['jobPlace']] = $value['jobPlace'];
}
if(!isset($type[$value['jobType']])) {
$type[$value['jobType']] = $value['jobType'];
}
}
$locations = array_values($location);
$types = array_values($type);
foreach($locations as $loc) {
echo '<div class="jobs-'. $loc->jobPlace .'">';
echo '<h1>Jobs in '. $loc->jobPlace .'</h1>';
foreach($types as $typ) {
$location = $xml->xpath('/jobs/job[jobPlace="'. $loc->jobPlace.'"][jobType="'. $typ .'"]');
if($location) {
echo '<h3>'. $typ .'</h1>';
}
foreach($location as $item) {
echo '<div class="job-offer">';
echo $item->jobTitle;
echo '</div>';
}
}
echo '</div>';
echo '</br>';
}
Результат примерно такой:
LOCATION #1:
Permanent Position
Actual job post(1)
...
Part Time Position:
Actual job post(3)
...
LOCATION #2:
Permanent Position
Actual job post(2)
...
Мне нужно, чтобы посты были разделены по местоположению, но в пределах местоположения, которое янужно сгруппировать по типу, я сначала создал два массива, которые собирали бы информацию о местоположении, мне просто нужно было отфильтровать уникальные значения, а затем я бы использовал «XPath» для «фильтрации» данных в XML, то же самое с типами длякаждое место.Я хотел, чтобы он был динамичным, поэтому, если добавляются новые местоположения или новые типы заданий, он все равно должен работать, и в настоящее время это работает нормально, но я прекратил использовать несколько foreach, и мне интересно, есть ли лучший способ решить эту проблему.(Мне действительно не нужен код, но я хотел бы улучшить его, поэтому было бы здорово просто обсудить идеи!)
Заранее спасибо за ваше время.
С уважением,