Как заказать массив в PHP, который будет передан в приложение для Android - появляется дополнительная «[»

0

У меня возникли проблемы с упорядочением и массивом на 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 теперь не может прочитать ответ.

  • 0
    Для начала вам нужно показать, что находится в $response . но, как написано, вы бы $response['hospitais'] массив в $response['hospitais'] , сделав эту запись массивом.
Теги:
arrays

1 ответ

0

На решении, которое я попробовал, вместо использования

array_push($response["hospitais"], $hospital);

я использовал

$response = array ('hospitais' => $hospital);  

Ещё вопросы

Сообщество Overcoder
Наверх
Меню