我有一个如下所示的数组:
array(
'session_id' => 'ea29e7ae5c976794896b4c256f455dd5',
'user_identifier' => "{'user_id':87,'username':'some username','email':'someuseremail.com','first_name':'Some','last_name':'User','company':'Company'}",
'request_uri' => '/'
);
我想将其转换为以下内容:
array(
'session_id' => 'ea29e7ae5c976794896b4c256f455dd5',
'user_id' => 87,
'username' => 'some username',
'email' => 'someuseremail.com',
'first_name' => 'Some',
'last_name' => 'User',
'company' => 'Company',
'request_uri' => '/'
);
这意味着我在user_identifier
key处解码 JSON,我正在制作初始数组的一部分,$original
然后我正在删除user_identifier
key。
到目前为止,这是我所做的:
foreach ($original as $key => $log) {
$original[$key] = (array) $log;
}
foreach ($original as $key => $log) {
foreach($log as $k => $v) {
if ($k === 'user_identifier') {
$original['decoded'] = (array) json_decode($v);
}
}
}
这给了我一个这样的数组:
array(
'session_id' => 'ea29e7ae5c976794896b4c256f455dd5',
'request_uri' => '/',
'user_identifier' => "{'user_id':87,'username':'some username','email':'someuseremail.com','first_name':'Some','last_name':'User','company':'Company'}",
'decoded' => array(
'user_id' => 87,
'username' => 'some username',
'email' => 'someuseremail.com',
'first_name' => 'Some',
'last_name' => 'User',
'company' => 'Company'
)
);
正如您可能注意到的,这甚至不是我正在寻找的数组,我已经有一个foreach
循环将初始结果转换为数组 - 它作为stdClass
对象出现 - 然后是一个foreach
用于解码 JSON的嵌套循环并尝试使其成为一部分的初始数组。
在这种情况下,我需要添加另一个循环来线性化数组。我担心的是这个数组只是一个例子,但我需要转换的数组很大。
有没有更好的方法来实现这一目标?
我正在使用 PHP 5.3.3
我会这样做:
将原始 JSON 提取到数组中。(一定要设置第二个参数,json_decode
这样你最终会得到一个数组而不是一个对象。)
$identifier = json_decode($your_array['user_identifier'], true);
将提取的数组与原始数组合并。
$your_array = array_merge($your_array, $identifier);
取消设置现在冗余的 JSON
unset($your_array['user_identifier']);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句