在PHP中将字符串转换为关联数组

时间:2017-11-23 14:38:44

标签: php arrays json

我正在使用PHP和cURL向API发出请求。

API使用加密字符串进行响应,然后我必须使用json_decode并通过预定义的解密方法运行它,该方法返回一个字符串。

所以我有这样的事情:

echo $response; 
$decodedResponse = json_decode($response, true);

// New instance of Decrypt
$decrypt =  new Decrypt();
$decryptedResponse = $decrypt->decrypt($decodedResponse);
echo $decryptedResponse;

使用var_dump($decryptedResponse)会产生string(960)但字符串看起来像JSON数组。

{"Title":"Mr","Forenames":"Steve"}

那么撕掉这个字符串以便通过关联数组使用变量的最佳方法是什么?

我已经尝试过了:

foreach(decryptedResponse as $data)
{
    echo $data['Title'];
}

但这并没有在屏幕上输出任何内容。

我是否误解了使用json_decode

正如许多人所说,似乎你必须解码两次,我会调查并分享我的发现。

3 个答案:

答案 0 :(得分:1)

您需要在解密结果

上再次使用json_decode
$decodedResponse = json_decode($response, true);

// New instance of Decrypt
$decrypt =  new Decrypt();
$decryptedResponse = $decrypt->decrypt($decodedResponse);

$decryptedArry = json_decode($decryptedResponse, true);
var_dump($decryptedArry);
echo $decryptedArry['Title'];

答案 1 :(得分:0)

下面的代码显示json_decode的工作方式与你想要的一样,但似乎你的Decryption类做了一些奇怪的事情。

$response = '{"Title":"Mr","Forenames":"Steve"}';
$decodedResponse = json_decode($response, true);

var_dump($decodedResponse);
echo $decodedResponse["Title"];

答案 2 :(得分:0)

As you told Using `var_dump($decryptedResponse)` yields string(960) but the string looks like a JSON   means your decrypt duration convert it again json. You can try bellow code it may resolve your issue
    $decodedResponse = json_decode($response, true);
    // New instance of Decrypt
    $decrypt =  new Decrypt();
    $decryptedResponse = $decrypt->decrypt($decodedResponse);
    $decryptedResponse = json_decode($response, true);
    foreach(decryptedResponse as $data)
    {
        echo $data['Title'];
    }