【发布时间】:2021-10-21 12:46:45
【问题描述】:
我有以下来自 json 的对象数组。这个想法是按观察属性排序。我该怎么做?
我的对象数组
[
[
"id" => "07e17609-2359-4b21-9161-6e10715eb2f1",
"description" => "Digital Account",
"observation" => null
],
[
"id" => "1f9a3695-dafe-46yb-9caa-7a413bedc3c9",
"description" => "Cashback",
"observation" => '1% cashback on all purchases using Méliuz'
],
[
"id" => "0f9a5695-dafe-46fb-9caa-7a418bedc3c9",
"description" => "Google Pay",
"observation" => null
],
];
所需的排序输出
[
[
"id" => "1f9a3695-dafe-46yb-9caa-7a413bedc3c9",
"description" => "Cashback",
"observation" => '1% cashback on all purchases using Méliuz'
],
[
"id" => "07e17609-2359-4b21-9161-6e10715eb2f1",
"description" => "Digital Account",
"observation" => null
],
[
"id" => "0f9a5695-dafe-46fb-9caa-7a418bedc3c9",
"description" => "Google Pay",
"observation" => null
],
];
即如果观察字段不为空,则必须排在第一位
我用下面的 usert 试过了,但是没用。
usort($this->rewards, fn($a, $b) => strcmp($a->observation, $b->observation));
【问题讨论】:
-
您的 JSON 不是 JSON。它是从中提取的一块。有效的 JSON 不能以
"rewards":开头。此外,JSON 没有单引号字符串文字。你能提供有效的 JSON 吗? -
您需要做的第一件事是使用
json_decode将JSON 数据转换为数组。然后,您可以使用array_multisort对其进行排序。检查php.net/manual/en/function.array-multisort.php,特别是第三个例子。 -
@trincot,我更新了我的 quetstion only 数组