PHP从Mysql中取消数据序列化并创建数组


PHP Unserialize Data From Mysql and Create Array

我在Mysql中的表中有两列。列是Amount和NewObject,其中包含一个序列化的数组结构,如下所示:

{"type":"Sanction","data":{"MyID":-1,"Type":{"type":"Translation","data":{"code":"STATE","codeType":"Purchase"}},"Name":"newnamehereagain","Org":"60066","StartDate":"2012-02-15","EndDate":"2012-02-16","CloseDate":null,"EnteredDate":"2012-02-14 15:33:58","PacketSentDate":"2012-02-14 15:33:58","CancelledDate":null,"CancellationReason":null,"MyBigID":"004061","Countries":null,"SiteName":"nert","AddressLine1":"98 Patterson Road","AddressLine2":"","City":"Lawrenceville","State":"GA","Zip":"30044","Participants":null,"AdditionalInsured":"","Comments":null,"Program":"TT","Levels_SanctionLevel_array":"IT03,TLEVEL10"}}

另一列是金额。我正在运行此查询以提取与ID:匹配的所有行

$sql2 = $db->query("SELECT `Amount`,`NewObject` FROM `mb_cart` WHERE `PersonID` = '$id'");

然后,我想从序列化数组NewObject中提取"Name"字段(例如:"Name":"newnamehereagain"),一旦我有了名称,就用这个名称创建一个数组,然后将数据库列中的"Amount"添加到这个名称中。这能实现吗?

以下是我尝试过的(没有乐趣):

foreach ($sql2 as $values)
{
    $value = explode(",", $values);
foreach ($value as $v)
   {
   array($amount, $v);
   }
}

您的"NewObject"列似乎包含一个经过JSON编码的嵌套哈希。您应该使用json_decode将其转换回嵌套数组结构,修改值,然后通过json_encode对其重新编码。