2016-02-18 6 views
0

Я пытаюсь отобразить всех пользователей в моей базе данных в JSON форме в array. Это то, что у меня есть - но не в той форме, что я хочу его вphp echoing многомерный массив в форме JSON

{ 
    "username": [ 
    "bobgreen", 
    "jacksmitd", 
    "samson", 
    ] 
    "forename": [ 
    "Bob", 
    "Jack", 
    "Sam", 
    ], 
    "surname": [ 
    "O'Conor", 
    "Smitd", 
    "Son", 
    ] 
} 

Это мой код, который дает этот выход ...

if(mysqli_num_rows($outcome)){ 
    while($row = mysqli_fetch_assoc($outcome)){ 
     $finalOutcome["username"][] = $row["username"]; 
     $finalOutcome["forename"][] = $row["forename"]; 
     $finalOutcome["surname"][] = $row["surname"]; 
    } 
    echo json_encode($finalOutcome); 
} 

Я хочу, чтобы хранить все соответствующие детали внутри скобок, так как:

{ 
    "username":"bobgreen" 
    "forename":"Bob" 
    "surname":"O'Conor" 
} 
{ 
    "username":"jacksmitd" 
    "forename":"Jack" 
    "surname":"Smitd" 
} 
{ 
    "username":"samson" 
    "forename":"Sam" 
    "surname":"Son" 
} 

Кроме того, как я извлечь все необходимые данные из каждой скобки и хранить в виде списка в Java? Потому что я пытаюсь сохранить все детали в расчете на основе пользователей, и я не был уверен, как это сделать с моим первым JSON массива

+0

Java или Javascript? –

+0

Извините, Java. Я хочу использовать 'username',' forename' и 'surname' для каждого пользователя, поскольку я хочу добавить его в список. –

ответ

1

Что касается основного вопроса:

Вы должны использовать этот синтаксис:

while($row = mysqli_fetch_assoc($outcome)) 
{ 
    $finalOutcome[] = array 
    (
     "username" => $row["username"], 
     "forename" => $row["forename"], 
     "surname" => $row["surname"] 
    ); 
} 
echo json_encode($finalOutcome); 

по существу, в исходном запросе вы увеличиваете $finalOutcome суб-массивы вместо $finalOutcome

+0

Мой ответ почти такой же. Результат будет таким же с другим решением, которое также работает. –

+0

Не работает! Я получаю 'Parse error: синтаксическая ошибка, неожиданная ';', ожидающая ')'' в 'PostMan' –

+0

@AndreCardoso No. Если идентификатор начинается с 1, т. Е. Вы получите' {"1": {" имя пользователя ":" johnd "," forename ":" john "," surname ":" doe "}}' вместо '[{" username ":" johnd "," forename ":" john "," surname ": «doe»}] ' – fusion3k

0

вы можете сделать лучшее решение (comparated к д uestion код):

if(mysqli_num_rows($outcome)){ 
while($row = mysqli_fetch_assoc($outcome)){ 

    $userId = $row["id"]; 
    $finalOutcome[$userId]["username"] = $row["username"]; 
    $finalOutcome[$userId]["forename"] = $row["forename"]; 
    $finalOutcome[$userId]["surname"] = $row["surname"]; 
} 
echo json_encode($finalOutcome); 

И выход будет:

[ 
    { 
     "username":"username0", 
     "forename":"forename0", 
     "surname":"surname0" 
    }, 
    { 
     "username":"username1", 
     "forename":"forename1", 
     "surname":"surname1" 
    } 
] 
+0

Нет, если '$ row [" id "]' не начинается с 0 и/или имеет пробел – fusion3k

+0

Хорошо, но в чем проблема, если не начинается с '0'? Выход будет точно таким же!Это решение состоит только для группировки информации пользователем, их идентификаторы не используются, как вы можете видеть. –

+0

Если id не начинается с 0, json конвертирует его в объект вместо массива. json не разрешает ассоциативные массивы – fusion3k

Смежные вопросы