php - 根据另一个 JSON 编码数组对另一个数组进行排序

标签 php arrays

我有两个 JSON 编码数组 第一个数组 {<br/> "User_id":2, "Seeds":["11","22","31","14"] }

第二个数组

{
"Seeds": [
    {
        "Team_name": "Belmont Bruins",
        "Team_id": "22",

    },
    {
        "Team_name": "Arkansas State Red Wolves",
        "Team_id": "14",
    },
    {
        "Team_name": "Arizona Wildcats",
        "Team_id": "11",
    },
    {
        "Team_name": "Brown Bears",
        "Team_id": "31",
    }
]

}

现在我需要根据第一个数组对第二个数组进行排序。第一个数组中的“Seeds”对应于第二个数组中的“Team_id”。 所需的输出是:

{
    "Seeds": [
        {
            "Team_name": "Arizona Wildcats",
            "Team_id": "11",

        },
        {
            "Team_name": "Belmont Bruins",
            "Team_id": "22",
        },
        {
            "Team_name": "Brown Bears",
            "Team_id": "31",
        },
        {
            "Team_name": "Arkansas State Red Wolves",
            "Team_id": "14",
        }
    ]
}

我发现了类似的问题。但这些解决方案在这种情况下似乎不起作用。

最佳答案

您可以使用以下示例。我使用 array_flip() 创建一个查找,并根据该查找对第二个数组进行排序。

有这个 json:

$j1 = <<<EOF
{
   "User_id":2,
   "Seeds":["11","22","31","14"]
}
EOF;

// I needed to remove addtional commas here
$j2 = <<<EOF
{
"Seeds": [
    {
        "Team_name": "Belmont Bruins",
        "Team_id": "22"

    },
    {
        "Team_name": "Arkansas State Red Wolves",
        "Team_id": "14"
    },
    {
        "Team_name": "Arizona Wildcats",
        "Team_id": "11"
    },
    {
        "Team_name": "Brown Bears",
        "Team_id": "31"
    }
]
}
EOF;

...您可以执行以下操作:

// Convert to array
$a1 = json_decode($j1, true);
$a2 = json_decode($j2, true);

// Create lookup
$lookup = array_flip($a1["Seeds"]);

// sort array2
usort($a2["Seeds"], function($a, $b) use($lookup) {
    if($lookup[$a["Team_id"]] > $lookup[$b["Team_id"]]) {
        return 1;
    } else if ($lookup[$a["Team_id"]] < $lookup[$b["Team_id"]]) {
        return -1;
    }
    return 0;
});

// Done
var_dump($a2);

关于php - 根据另一个 JSON 编码数组对另一个数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29532767/

相关文章:

PHP - 使用一组 ID 从数据库中删除许多项目

php - 如何将数组元素扩展为函数的单独参数

c++ - 在 C++ 中从数组函数设置一个数组

Javascript 使用 for 循环将值插入多维数组

ios - 过滤NS数组,根据issynced值获取元素

php - 为选择元素设置占位符

php - 在 PHP 中获取 DomElement 的内部 HTML

php - 如何用php找到mysql中某个字段的真实表名?

javascript - 替换字符串数组Javascript中的字符

php - elasticsearch:搜索词的一部分