Как преобразовать JSON в массив в PHP?

0

Принимая следующий JSON

{ "phone": [ "123", "456", "789"]}

в PHP я пытаюсь получить это (отображается с помощью print_r):

Array ( [0] => 123 [1] => 456 [2] => 789 )

Поэтому я попытался использовать следующий код без успеха:

if (isset($_GET["phone"])) {
    //Decode Json
    $values = json_decode($_GET['phone'], true);
    print_r($values);
    foreach ($values as $key => $value) {
    echo "<p>$key | $value</p>";
    }...

Как я могу получить и преобразовать этот JSON в запрошенный массив?

Он отлично работает, когда JSON определен в PHP-коде. Затем я получаю ассоциативный массив. На мой взгляд, проблема может быть в коде java (android), потому что $ _GET ['phone'] должен работать в php:

 ArrayList<String> paramsstring = new ArrayList<String>();
 ArrayList<BasicNameValuePair> paramstodb = new ArrayList<BasicNameValuePair>();
 contacts = aa.toArray(new String[aa.size()]);

    for (int i = 0; i < contacts.length; i++) {
        paramsstring.add(contacts[i]);}

    paramstodb.add(new BasicNameValuePair("phone", paramsstring.toString()));

    // getting JSON string from URL
    JSONObject json = jParser.makeHttpRequest(url_all_user, "GET", paramstodb);

Может быть, php получает другой формат этого JSON? Запрос GET не должен быть проблемой, потому что JSON не очень длинный.

  • 0
    Это должно работать нормально! Пожалуйста, покажите нам свой полный код
  • 0
    $array = json_decode($_GET['phone'], true); $values=$array['phone'];
Показать ещё 1 комментарий
Теги:
arrays

2 ответа

0

var_dump в декодированном объекте JSON приводит к:

версия объекта

object(stdClass)#1 (1) {
  ["phone"]=>
  array(3) {
    [0]=>
    string(3) "123"
    [1]=>
    string(3) "456"
    [2]=>
    string(3) "789"
  }
}

версия ассоциативного массива:

array(1) {
  ["phone"]=>
  array(3) {
    [0]=>
    string(3) "123"
    [1]=>
    string(3) "456"
    [2]=>
    string(3) "789"
  }
}

Это именно то, что он должен вернуть. См. Здесь: http://ideone.com/CDBvGQ

Поскольку это вложенный массив, этот foreach не будет работать так, как вы ожидали, попробуйте это вместо этого:

foreach ($values['phone'] as $key => $value) {

Смотрите, что он полностью работает здесь: http://ideone.com/QG3uH6

0

позволяет предположить, что вы получите значения json в $_GET["phone"]

if (isset($_GET["phone"])) {
    //Decode Json
    $array = json_decode($_GET['phone'], true); 
    $values=$array['phone'];

    print_r($values);
    foreach ($values as $key => $value) {
        echo "<p>$key | $value</p>";
    }
 }

Ещё вопросы

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