从我的数据库返回的数据已加密。因此在SQL末尾运行订单无法正常工作。所以我必须在服务器端进行排序。
我对此提出了很多问题,我尝试了一个建议,但我似乎无法解决。我想这个程序和这一个(看起来像最近我一直在寻找的)。
2件事正在发生:
1:不按名称字段(键)排序
2:我们的内部应用程序抱怨说它不再是JSON字符串。
我需要对我的名字进行排序,所以我需要自定义排序
我得到这样的数组集:
$jsonData = array();
...connected to the DB.... stuff here...
//loop through the return:
if($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$row["name"] = $this->decryptData($row["name"]);
$jsonData["groups"][] = $row ;
}
}
$result->close();
mysqli_close($mysqli);
return $jsonData;
返回代码如下所示:
{
"groups": [
{
"id": "71",
"name": "Bob",
},
{
"id": "73",
"name": "Howard",
},
{
"id": "79",
"name": "Sam",
},....
....{
"id": "65",
"name": "Al",
}
]
}
好的,因此我在例程的底部添加了以下代码进行排序(注意,我尝试使用方法):
.... 代码
/*usort($jsonData, function($a, $b) {
return $a['name'] - $b['name'];
});*/
usort($jsonData, function($a, $b) {
return strcasecmp($a['name'], $b['name']);
});
/* and I tried this get the same output but with a php error say what I have is not a array
array_multisort($jsonData['name']);
-- and this--
array_multisort($jsonData['groups']['name']);
*/
$result->close();
mysqli_close($mysqli);
return $jsonData;
我得到的结果与我需要的结果几乎没有什么不同,并且没有按名称排序:
[
[
{
"id": "71",
"name": "Bob",
},
{
"id": "73",
"name": "Howard",
},
{
"id": "79",
"name": "Sam",
},....
....{
"id": "65",
"name": "Al",
}
]
]
我现在迷路了。
您不能将算术应用于字符串值进行比较;您需要一个字符串函数,例如strcmp()
或strcasecmp()
,该函数返回值-1、0或1:
usort($jsonData, function($a, $b) {
return strcasecmp($a['name'], $b['name']);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句