Я пишу код 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 - это массив, а конец кода в вызове json_encode снова помещается в массив. Удалите его, и он вернет строку json, а не массив.
Строка array("success" => 1); - странная. Если вы хотите, чтобы он был сохранен, вам нужно сохранить его в какой-то переменной. Прямо сейчас он ничего не делает.
@MagnusEriksson Я изменил код, как вы сказали, и я также отредактировал вопрос, добавив требуемый вывод. подскажите, что не так с кодом.
Вы говорите «Мне нужна строка JSON с именем success = 1», но результат вашего примера по-прежнему отображается иначе. В примере показан объект json с параметром с именем «success», который содержит целое число. Ваше обновление в основном сделало ваш вопрос более неясным.
Если результат примера - это то, что вы хотите, то мой ответ ниже даст вам это. Если это нет, что вы хотите, измените пример.






Вместо того, чтобы создавать два массива, один для результата и один для успеха, определите структуру только в одном массиве и добавьте к нему:
// 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 - Вы нигде в своем вопросе не упомянули об этом. Вышеупомянутое вернет то, что вы дали в качестве примера вывода. Я действительно не понимаю, о чем вы еще спрашиваете.
Я отредактировал вопрос, ответьте @MagnusEriksson
$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);
Это будет работать нормально.
$result = array();...array($result)вы помещаете свой массив в другой массив. Я полагаю, вы хотели, чтобы он был преобразован в массив, это был быjson_encode(array)$result);.