Цикл через массив json и группировка по ключевым значениям



После json_decode у меня есть следующий массив:::



$json = Array ( [name] => Array ( [0] => Peter [1] => David ) [dep] => Array ( [0] => accounts [1] => sales ) [date] => Array ( [0] => 10/27/2015 [1] => 09/25/2015 ) );


Как я могу сгруппировать значения по ключам, чтобы получить следующее в цикле PHP foreach ? :::



<ul>
<li>Peter, accounts, 10/27/2015</li>
<li>David, sales, 09/25/2015</li>
</ul>


Я пробовал аналогичный цикл foreach (см. ниже) без желаемых результатов, я могу печатать все ключи и значения, но я не могу группировать значения по ключам, например. [1]:::



foreach($json as $row){
foreach($row as $key=>$val){
echo $key . ': ' . $val . '<br>';
}
}


Любая помощь будет признательна:::

632   2  

2 ответов:

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

<?php
    $json = [
        "name" => ["Peter","David"],
        "dep" => ["accounts", "sales"],
        "date" => ["10/27/2015","09/25/2015"]
    ];
    $final = [];
    foreach($json as $section)
    {
        foreach($section as $key=>$info)
        {
            if(!isset($final[$key])) $final[$key] = "";
            $final[$key] .= $info . ", ";
        }
    }

    echo "<ul>";
    foreach($final as $row)
    {
        echo "<li>" . substr($row, 0, strlen($row) - 2) . "</li>"; // -2 to remove the extra ", "
    }
    echo "</ul>";
?>

Результат:

<ul>
    <li>Peter, accounts, 10/27/2015</li>
    <li>David, sales, 09/25/2015</li>
</ul>

Возможно, попробуйте что-то вроде этого:

$arrayCount = count($json['name']);

$output = '<ul>';

for($i = 0; $i < $arrayCount; $i++) {
    $output .= '<li>';
    $output .= $json['name'][$i] . ', ';
    $output .= $json['dep'][$i] . ', ';
    $output .= $json['date'][$i];
    $output .= '</li>';
}

$output .= '</ul>';

echo $output;

Вам также было бы лучше использовать такой формат массива:

$json = 
Array( 
      Array( 
        'name' => 'Peter',
        'dep' => 'accounts',
        'date' => '10/27/2015'
      ),
      Array( 
        'name' => 'David',
        'dep' => 'accounts',
        'date' => '09/25/2015'
      )
    );

Это потому, что вы можете создать более простой для понимания цикл foreach, как это:

$output = '<ul>';

foreach($json as $row) {
    $output .= '<li>';
    $output .= $row['name'] . ', ';
    $output .= $row['dep'] . ', ';
    $output .= $row['date'];
    $output .= '</li>';
}

$output .= '</ul>';

echo $output;

Comments

    Ничего не найдено.