Данные, возвращаемые из моей базы данных, зашифрованы. поэтому выполнение заказа в конце SQL не работает. поэтому я должен сортировать на стороне сервера.PHP Сортировка массива по имени
Я вижу много вопросов об этом Я пробовал предложения, но я не могу найти сортировку. Я пробовал это routine и this one (смотри, как ближе всего к тому, что я искал).
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",
}
]
]
Я потерял в данный момент.
Привет, Джек и спасибо, что я пропустил это, однако даже с изменением я все еще не сортирую его по имени в порядке возрастания – Mike
@Mike Это просто означает, что '$ a' и '$ b' либо не являются массивами, либо не имеют ключа' 'name ''. Вы пробовали применить сортировку к '$ jsonData ['groups']'? –
Да, я сделал usort ($ jsonData ["group"], function ($ a, $ b) \t {return strcasecmp ($ a ['name'], $ b ['name']); \t}); но я получаю сообщение о том, что первая коляска не является массивом. который теперь я думаю, что мой var $ jsonData неверен – Mike