如何将此数组拆分为分离的变量?

时间:2017-02-08 18:39:43

标签: php arrays variables split

当我输入print_r($ response)时,我从服务器收到此响应:

    {"success":true,"title_response":"SUCCESS","text_response":"any text"}}

我尝试过使用:

     list($var1, $var2,$var3)=explode(",", $response);

但结果是:

     $var1= {"success":true;
     $var2= "title_response":"SUCCESS";
     $var3= text_response":"any text"}};

我需要结果:

    $var1= true;
    $var2= "SUCCESS";
    $var3= "any text";

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

它是一个JSON字符串,您可以使用json_decode的组合转换为对象,然后使用get_object_vars将对象的变量作为数组:

list($var1, $var2, $var3) = get_object_vars(json_decode($response));

echo $var2;   // SUCCESS

如评论中所述,如果字符串是有效的JSON,这只会起作用。我在编写问题时假设有一个复制/粘贴错误,并且您确实拥有有效的JSON。

答案 1 :(得分:0)

您可以按如下方式解析它:

// Problem data (with unbalanced { }'s)
$response = '{"success":true,"title_response":"SUCCESS","text_response":"any text"}}';

// Remove trailing '}}'
$response = substr($response, 0, -2);

// Split on the commas
$temp = explode(',', $response);

// For each element in the array, split on the colon, and take second part
array_walk($temp, function(&$value) {
  $value = explode(":", $value)[1];
});

// Distribute array into your variables
list($var1, $var2, $var3) = $temp;

但这是 非常 脆弱的代码。如果你的字符串中有逗号或冒号,它会以各种方式打破。

最好获得有效的JSON响应,并使用正确的JSON函数对其进行解析,如@Madbreaks所述。