PHP - ошибся JSON

Я пишу код PHP для вставки названия рабочего задания в счетчик. Мне нужна строка JSON с именем success = 1 вместе с массивом JSON. Я хочу использовать эту строку JSON в счетчике Android. Получаю только массив JSON. вот мой код:

        <?PHP
require_once('connection.php');
$workName = "SELECT workorder_name FROM workorder_category";
$con=mysqli_connect($server_name,$user_name,$password,$db);
$r = mysqli_query($con,$workName);


$result = array();
$resultArr = array('success' => true);
    while($row = mysqli_fetch_array($r)){

        array_push($result,array('$workOrderName'=>$row['workorder_name']));
        }
echo json_encode(array('result'=>$result));
mysqli_close($con);
?>

Я хочу, чтобы результат был таким:

{"success":1,result":[{"$workOrderName":"electrician"},{"$workOrderName":"plumber"},{"$workOrderName":"carpenter"}]}

в настоящее время я получаю результат вроде

{
    "result": [
        {
            "$workOrderName": "electrician"
        },
        {
            "$workOrderName": "plumber"
        },
        {
            "$workOrderName": "carpenter"
        }
    ]
}
$result = array(); ... array($result) вы помещаете свой массив в другой массив. Я полагаю, вы хотели, чтобы он был преобразован в массив, это был бы json_encode(array)$result);.
Peon 25.03.2018 12:08

$ Result - это массив, а конец кода в вызове json_encode снова помещается в массив. Удалите его, и он вернет строку json, а не массив.

István Döbrentei 25.03.2018 12:09

Строка array("success" => 1); - странная. Если вы хотите, чтобы он был сохранен, вам нужно сохранить его в какой-то переменной. Прямо сейчас он ничего не делает.

Magnus Eriksson 25.03.2018 12:14

@MagnusEriksson Я изменил код, как вы сказали, и я также отредактировал вопрос, добавив требуемый вывод. подскажите, что не так с кодом.

Chandu 25.03.2018 12:43

Вы говорите «Мне нужна строка JSON с именем success = 1», но результат вашего примера по-прежнему отображается иначе. В примере показан объект json с параметром с именем «success», который содержит целое число. Ваше обновление в основном сделало ваш вопрос более неясным.

Magnus Eriksson 25.03.2018 13:06

Если результат примера - это то, что вы хотите, то мой ответ ниже даст вам это. Если это нет, что вы хотите, измените пример.

Magnus Eriksson 25.03.2018 13:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
53
2

Ответы 2

Вместо того, чтобы создавать два массива, один для результата и один для успеха, определите структуру только в одном массиве и добавьте к нему:

// The main structure
$result = [
    'success' => 1,
    'result'  => [],
];

while($row = mysqli_fetch_array($r)){
    // Append to the sub key "result" (which we already defined as an array)
    $result['result'][] = ['$workOrderName'=>$row['workorder_name']]; 
}

// Just encode the complete array
echo json_encode($result);

Примечание: В этом примере используется короткий синтаксис массива [] (введенный в PHP 5.4) вместо длинного синтаксиса: array(). Они делают то же самое.

Я также заменил array_push() на более короткую версию: $someArray[] =.

извините, вы сделали правильно. Я хочу знать, можно ли использовать успех в качестве строки JSON в Android или нет.

Chandu 25.03.2018 12:57

@Chandu - Вы нигде в своем вопросе не упомянули об этом. Вышеупомянутое вернет то, что вы дали в качестве примера вывода. Я действительно не понимаю, о чем вы еще спрашиваете.

Magnus Eriksson 25.03.2018 12:59

Я отредактировал вопрос, ответьте @MagnusEriksson

Chandu 25.03.2018 13:04
$result = array();
$resultArr['success'] =true;
    while($row = mysqli_fetch_array($r))
{

        array_push($result,array('$workOrderName'=>$row['workorder_name']));
        }
$resultArr['result']  = $result;
echo json_encode($resultArr);

Это будет работать нормально.

Другие вопросы по теме