У меня возникли проблемы с упорядочением и массивом на PHP, прежде чем читать в приложении для Android.
Наблюдение:
1 - Я не могу заказать массив, поскольку я читаю из БД, потому что информация, которую я рассматриваю как первый критерий, основана на времени.
2 - Я могу передать информацию в приложение для Android, и с этой целью нет проблем.
Вот исходный код.
while ($row2 = mysqli_fetch_array($result2)) {
//array temporário
$cidade = $row2['CidadeHospital'];
$estado = $row2['EstadoHospital'];
$localidade = $cidade . " - " . $estado;
if (validacao_apontamento($row2['d_h_ultima_lotacao']) == 'valido') {
if ($row2['ultima_lotacao'] == 1) {
$lotacao = 'vazio';
$ordem = 1;
} else {
if ($row2['ultima_lotacao'] == 2) {
$lotacao = 'pouco cheio';
$ordem = 2;
} else {
if ($row2['ultima_lotacao'] == 3) {
$lotacao = 'muito cheio';
$ordem = 3;
} else {
if ($row2['ultima_lotacao'] == 4) {
$lotacao = 'lotado';
$ordem = 4;
} else {
$lotacao = 'sem registro';
$ordem = 9;
}
}
}
}
} else {
$lotacao = 'sem registro';
$ordem = 9;
}
$hospital = array("pid" => $row2['PID'], "nome" => $row2['NomeHospital'], "localidade" => $localidade, "lotacao" => $lotacao, "ordem" => $ordem);
array_push($response["hospitais"], $hospital);
}
Вот ответ, который читает приложение.
{"hospitais":[{"pid":"1","nome":"Madre Teresa","localidade":"Belo Horizonte - MG","lotacao":"sem registro","ordem":9}, .... , {"pid":"230","nome":"Fel\u00edcio Rocho","localidade":"Belo Horizonte - MG","lotacao":"pouco cheio","ordem":2}],"areadebusca":"N\u00e3o existem hospitais cadastrados pr\u00f3ximos, exibidos todos do Estado.","successo":1}
Решение, которое я пробовал, было следующим:
while ($row2 = mysqli_fetch_array($result2)) {
//array temporário
$cidade = $row2['CidadeHospital'];
$estado = $row2['EstadoHospital'];
$localidade = $cidade . " - " . $estado;
if (validacao_apontamento($row2['d_h_ultima_lotacao']) == 'valido') {
if ($row2['ultima_lotacao'] == 1) {
$lotacao = 'vazio';
$ordem = 1;
} else {
if ($row2['ultima_lotacao'] == 2) {
$lotacao = 'pouco cheio';
$ordem = 2;
} else {
if ($row2['ultima_lotacao'] == 3) {
$lotacao = 'muito cheio';
$ordem = 3;
} else {
if ($row2['ultima_lotacao'] == 4) {
$lotacao = 'lotado';
$ordem = 4;
} else {
$lotacao = 'sem registro';
$ordem = 9;
}
}
}
}
} else {
$lotacao = 'sem registro';
$ordem = 9;
}
$hospital [] = array("pid" => $row2['PID'], "nome" => $row2['NomeHospital'], "localidade" => $localidade, "lotacao" => $lotacao, "ordem" => $ordem);
}
$sort = array();
foreach ($hospital as $k => $v) {
$sort['ordem'][$k] = $v['ordem'];
$sort['nome'][$k] = $v['nome'];
}
array_multisort($sort['ordem'], $sort['nome'], SORT_ASC, $hospital);
array_push($response["hospitais"], $hospital);
Теперь я получил ответ:
{"hospitais":[[{"pid":"2","nome":"Lifecenter","localidade":"Belo Horizonte - MG","lotacao":"vazio","ordem":1}, .... , {"pid":"10","nome":"Vila da Serra","localidade":"Nova Lima - MG","lotacao":"sem registro","ordem":9}]],"areadebusca":"N\u00e3o existem hospitais cadastrados pr\u00f3ximos, exibidos todos do Estado.","successo":1}
Как вы можете видеть, в начале каждого массива есть дополнительные "[" перед записями.
1st - {"hospitais":[{"pid": ....
2nd - {"hospitais":[[{"pid": ....
Дело в том, что если аддиция на secon "[", мой APP теперь не может прочитать ответ.
На решении, которое я попробовал, вместо использования
array_push($response["hospitais"], $hospital);
я использовал
$response = array ('hospitais' => $hospital);
$response
. но, как написано, вы бы$response['hospitais']
массив в$response['hospitais']
, сделав эту запись массивом.