2012-06-16 8 views
0

У меня есть аутсорсинг данные из:Как заполнить этот массив PHP?

http://example.com/data/news.json

Вот пример результат после декодирования:

Array 
(
    [popular] => Array 
     (
      [last_week] => Array 
       (
        [0] => Array 
         (
          [title] => Business 1 
          [category] => blog/business/local 
         ) 
        [1] => Array 
         (
         [title] => Health 1 
         [category] => blog/health/skincare 
        ) 
       [2] => Array 
        (
         [title] => Business 2 
         [category] => blog/business/local 
        ) 
       [3] => Array 
        (
         [title] => Health 2 
         [category] => blog/health/skincare 
        ) 
      ) 
    ) 

) 

Я использовать следующий метод для его отображения:

$url = 'http://example.com/data/news.json'; 
$json = file_get_contents($url); 
if(!empty($json)) { 
$json_data = json_decode($json, true); 
$popular_last_week = $json_data['popular']['last_week']; 
$count = count($popular_last_week); 
$result .= $count.' last week popular article' . "\n"; 
for ($i = 0; $i <$count; $i++) { 
$result .= 'Title : '.$popular_last_week[$i]['title'] . "\n"; 
$result .= 'Category : '.$popular_last_week[$i]['category'] . "\n\n"; 
} 
echo $result; 
} 

и выходные данные:

4 на прошлой неделе популярные статьи

Название: Бизнес 1
Категория: блог/бизнес/местный

Название: Здоровье 1
Категория: Блог/здоровье/Уход за кожей

Название: Бизнес 2
Категория: блог/бизнес/местный

Название: Здоровье 2
Категория: Блог/здоровье/Уход за кожей

Вопрос заключается в том, чтобы отобразить результат будет следующим:

2 на прошлой неделе популярные Коммерческие статьи

Название: Бизнес 1
Категория: Busines

Название: Бизнес 2
Категория: Бизнес

2 на прошлой неделе статьи популярный Здоровье

Название: Здоровье 1
Категория : Здоровье

Название: Здоровье 2
Категория: Здоровье

помощь будет весьма признателен! Спасибо.

+1

Не уверен, если я правильно понимаю ... Просто перебираем массив, проверьте, если '' title' содержит Business' и отобразить его? – Pateman

+0

Привет, Спасибо за ваш ответ. Я новичок в PHP, и было бы здорово, если бы вы привели пример. :-D – Rifki

ответ

0

Вы хотите сказать, что хотите только показать 2 предмета? Вам нужно использовать цикл for.

for ($i = 0; $i < 2; $i++) { 
    # display for $i 
} 

Update:

Ах, я думаю, я понимаю. Вы должны использовать foreach цикл и цикл через два раза:

$categoryItems = array(); 
foreach ($popular_last_week as $item) { 
    $categoryItems[$item['category']][] = $item['title']; 
} 
foreach ($categoryItems as $category => $items) { 
    $result .= count($items) . ' popular in category ' . $category; 
    foreach ($items as $item){ 
        $result .= 'Title: ' . $item['title'] . "\n"; 
    } 
} 
echo $result; 
+0

Привет, да, я тоже поставил этот код, но я не знаю, может быть, его съел редактор – Rifki

+0

Эй, пожалуйста, взгляните на код, который я внес изменения – Rifki

+0

Пожалуйста, см. Мои обновления, жаль, что сложно отформатировать при наборе текста на моем телефоне – Andrew

3
$url = 'http://example.com/data/news.json'; 
$json = file_get_contents($url); 
if(!empty($json)) { 
    $json_data = json_decode($json, true); 
    $popular_last_week = $json_data['popular']['last_week']; 

    // This loop will group all entries by category. 
    $categories = array(); 
    foreach ($popular_last_week as $item) { 
     $categories[$item['category']][] = $item['title']; 
    } 

    // This loop will echo the titles grouped by categories. 
    foreach ($categories as $category => $titles) { 
     $result = count($titles) . ' popular in "' . $category . '"' . "\n"; 
     foreach ($titles as $title) { 
      $result .= 'Title: ' . $title . "\n"; 
     } 
     echo $result; 
    } 
} 
+0

категория считается ** только ** бизнес – hjpotter92

+0

Право. Исправленный. – Pateman

+0

Проблема в названии не всегда содержит «Бизнес». – Rifki

Смежные вопросы