Php 在阵列中取消序列化的最佳方法

Php 在阵列中取消序列化的最佳方法,php,serialization,Php,Serialization,我有一个包含序列化数据的数组,类似于下面的示例 Array ( [0] => Array ( [id] => 4 [data] => a:2:{s:6:"Series";a:1:{s:11:"description";s:11:"hello world";}s:4:"Type";a:1:{i:0;s:1:"1";}} [created] => 2009-10-12 18:45:

我有一个包含序列化数据的数组,类似于下面的示例

Array
(
    [0] => Array
        (
            [id] => 4
            [data] => a:2:{s:6:"Series";a:1:{s:11:"description";s:11:"hello world";}s:4:"Type";a:1:{i:0;s:1:"1";}}
            [created] => 2009-10-12 18:45:35
        )
    [1] => Array
        (
            [id] => 3
            [data] => a:2:{s:6:"Series";a:1:{s:11:"description";s:11:"hello world";}s:4:"Type";a:1:{i:0;s:1:"1";}}
            [created] => 2009-10-12 17:39:41

        )
    ...
)
取消序列化数据键的值并用其内容替换序列化数据的最佳方法是什么

我尝试过使用一个引用进行循环,虽然数组中的最后两个条目是相同的,但它们不应该是相同的

foreach($data as &$item) {
    $item['data'] = unserialize($item['data']);
}

类似的方法会奏效:

$data2 = array ();
foreach($data as $item) {
    $item['data'] = unserialize($item['data']);
    $data2[] = $item;
}
如果不想使用其他阵列,请执行以下操作:

foreach($data as $k => $item) {
    $data[$k]['data'] = unserialize($item['data']);
}

类似的方法会奏效:

$data2 = array ();
foreach($data as $item) {
    $item['data'] = unserialize($item['data']);
    $data2[] = $item;
}
如果不想使用其他阵列,请执行以下操作:

foreach($data as $k => $item) {
    $data[$k]['data'] = unserialize($item['data']);
}

foreach
循环中使用引用可能会引入难以跟踪的神秘行为。您应该为-循环使用一个简单的

$num = count($data);
for ($i = 0; $i < $num; $i++)
{
    $item[$i]['data'] = unserialize($item[$i]['data']);
}
$num=count($data);
对于($i=0;$i<$num;$i++)
{
$item[$i]['data']=unserialize($item[$i]['data']);
}

foreach
-循环中使用引用可能会引入难以跟踪和神秘的行为。您应该为
-循环使用一个简单的

$num = count($data);
for ($i = 0; $i < $num; $i++)
{
    $item[$i]['data'] = unserialize($item[$i]['data']);
}
$num=count($data);
对于($i=0;$i<$num;$i++)
{
$item[$i]['data']=unserialize($item[$i]['data']);
}
还有另一种方法:

foreach ($data as $key => $item) {
    $data[$key]['data'] = unserialize($item['data']);
}
或:

还有另一种方式:

foreach ($data as $key => $item) {
    $data[$key]['data'] = unserialize($item['data']);
}
或:


你的方式看起来不错。“数组中的最后两个条目在不应该相同的情况下是相同的”是什么意思?由于某种原因,数组中的最后一个结果是它之前的结果的克隆。我觉得很傻,我自己把这个问题复杂化了,答案很明显。你的方法看起来不错。“数组中的最后两个条目在不应该相同的情况下是相同的”是什么意思?由于某种原因,数组中的最后一个结果是它之前的结果的克隆。我觉得很傻,我自己把这个问题搞得太复杂了,答案很明显。我希望你不要拿后一个例子。:-)我希望你没有举后一个例子。:-)