PHP正在努力删除包含双引号的JSON字符串的一部分

用户名

尝试将以下内容分解为日期数组...

[["custom",{"2014":{"7":{"14":true}}}],["custom",{"2014":{"7":{"7":true}}}]]

$availableDatesCodeStripped = substr($availableDatesCode, 1, -2);
// Result - ["custom",{"2014":{"7":{"14":true}}}],["custom",{"2014":{"7":{"7":true}}}

$availableDatesCodeArray = explode("],", $availableDatesCodeStripped);
// Array Element 1 Result - ["custom",{"2014":{"7":{"14":true}}}
// Array Element 2 Result - ["custom",{"2014":{"7":{"7":true}}}

foreach($availableDatesCodeArray as $key => $value) {
    $availableDatesCodeArray[$key] = str_replace(":true}}}", " ", $value);
}

// Array Element 1 Result - ["custom",{"2014":{"7":{"14"
// Array Element 2 Result - ["custom",{"2014":{"7":{"7"

foreach($availableDatesCodeArray as $key=>$value){
    $availableDatesCodeArray[$key] = str_replace("[\"custom\",{\"", "", $value);
}

// Array Element Results - NO CHANGE!

我的目标是最终...

2014-7-14

2014-7-7

因此,如果有人对我的工作方式有更好的解决方案,请说。

约翰·格林

即使您要解析它,您也要对它进行标记化或使用正则表达式。这种字符串替换只会杀死您,并且完全无法维护。

话虽这么说,您的传入日期格式非常疯狂。看起来它被设计为在哈希表中存储多个日期的一种方式,但是这种设计有点奇怪。

我被叫走了,被打败了-尼尔的代码行不通。那里的问题是,他正在将“ custom”作为键,实际上它是传入数组中的一个值。以下是针对您的测试数据进行测试的。

$availableDatesCode = '[["custom",{"2014":{"7":{"14":true}}}],["custom",{"2014":{"7":{"7":true}}}]]';
$arr = json_decode($availableDatesCode,true);
$dates = array();
foreach ($arr as $dateItem) {
    if ($dateItem[0] == 'custom') // assuming you only want things marked as custom.
    {
        $pDate = array();
        foreach ($dateItem[1] as $year=>$dateMore)
        {
            foreach ($dateMore as $month=>$dateMore2)
            {
                foreach ($dateMore2 as $day=>$ex)
                {
                    $dates[] = implode('-',array($year, $month, $day));
                }
            }
        }
    }
}

print_r($dates);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章