首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环通过json数组并按键值分组。

循环通过json数组并按键值分组。
EN

Stack Overflow用户
提问于 2015-10-12 21:49:55
回答 2查看 1.7K关注 0票数 2

在json_decode之后,我有以下数组:

代码语言:javascript
运行
复制
$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循环中获得以下内容?:

代码语言:javascript
运行
复制
<ul>
    <li>Peter, accounts, 10/27/2015</li>
    <li>David, sales, 09/25/2015</li>
</ul>

我尝试了一个类似的foreach循环(见下面),没有期望的结果,我能够打印所有的键&值,但我不能按关键字eg对值进行分组。1::

代码语言:javascript
运行
复制
foreach($json as $row){
    foreach($row as $key=>$val){
        echo $key . ': ' . $val . '<br>';
    }
}

请提供任何援助:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-12 22:04:35

您可以使用以下代码对列表进行排序:

代码语言:javascript
运行
复制
<?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>";
?>

结果:

代码语言:javascript
运行
复制
<ul>
    <li>Peter, accounts, 10/27/2015</li>
    <li>David, sales, 09/25/2015</li>
</ul>
票数 2
EN

Stack Overflow用户

发布于 2015-10-12 22:16:46

也许可以试试这样的方法:

代码语言:javascript
运行
复制
$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;

使用这样的数组格式也会更好:

代码语言:javascript
运行
复制
$json = 
Array( 
      Array( 
        'name' => 'Peter',
        'dep' => 'accounts',
        'date' => '10/27/2015'
      ),
      Array( 
        'name' => 'David',
        'dep' => 'accounts',
        'date' => '09/25/2015'
      )
    );

这是因为您可以创建一个易于理解的foreach循环,如下所示:

代码语言:javascript
运行
复制
$output = '<ul>';

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

$output .= '</ul>';

echo $output;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33090790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档