如何在PHP中将JSON转换为数组


How to convert JSON to array in PHP?

接收以下 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不是很长。

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

假设您获取 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>";
    }
 }