数组 - php错误排序

问题描述 投票:-1回答:3

我编写了一个API调用,它应该返回并在我提供的代码中对数据库中的值进行排序。

不管它有用,但不是应该的。

$result = array();
foreach ($myResults as $myResult => $label) {
    $result['id'][$myResult] =  $label["id"];
    $result['name'][$myResult] =  $label["name"];
    $result['totalCollected'][$myResult] =  $label["totalCollected"];
}

return $result;

所以,这是我的代码,它返回..

"data": {
    "id": [
        1,
        2
    ],
    "name": [
        "Name 1",
        "Name 2"
    ],
    "totalCollected": [
        2500,
        2000
    ]
},

我想迭代一个数组看起来像这样..

 [
    {
        "id": 1,
        "name": Name 1,
        "value": 2500,
    },
    {
        "id": 2,
        "name": Name 2,
        "value": 2000,
    }
 ]
php arrays
3个回答
0
投票

试试这种方式:

function sort_objects_by_total($a, $b) {
  if($a->totalCollected == $b->totalCollected){ return 0 ; }
  return ($a->totalCollected < $b->totalCollected) ? -1 : 1;
}

$result = array();
foreach ($myResults as $key => $value){
    $result[$key]['id'] =  $value["id"];
    $result[$key]['name'] =  $value["name"];
    $result[$key]['totalCollected']=  $value["totalCollected"];
}

usort($result, 'sort_objects_by_total');
$sorted_result=array_reverse($result)
return $sorted_result;

0
投票

您可以尝试确保结果项是对象。

$result = array();
foreach ($myResults as $myResult){
    $result[] = (object)array(
        'id' => $myResult["id"],
        'name' => $myResult["name"],
        'value'=> $myResult["totalCollected"]
    );
}
return $result;

0
投票

所以,我这样做了。谢谢你的回复。

foreach ($schoolResults as $schoolResult => $label) {
        $result['data'][$schoolResult]["id"] = $label["id"];
        $result['data'][$schoolResult]["name"] = $label["name"];
        $result['data'][$schoolResult]["totalCollected"] = $label["totalCollected"];

    }

    return $result;
© www.soinside.com 2019 - 2024. All rights reserved.