我在一个网站上工作,我想在其中从字符串中提取几个字段。我用来获取该字符串的代码是:
<?php
for ($i = 0; $i < count($data['item']->logistic_out); $i++) {
echo strtolower($data['item']->logistic_out[$i]->logistics_times);
}
?>
上面的回显代码正在打印以下字符串,该字符串是logistics_times:
a: 7: {
s: 3: "mon";a: 2: {
s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
}
s: 3: "tue";a: 2: {
s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
}
s: 3: "wed";a: 2: {
s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
}
s: 3: "thu";a: 2: {
s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
}
s: 3: "fri";a: 2: {
s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
}
s: 3: "sat";a: 2: {
s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
}
s: 3: "sun";a: 2: {
s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
}
}
问题陈述:
我想知道我应该在上面的代码中进行哪些更改,以使其看起来像这样:
mon 09:00 21:00
tue 09:00 21:00
我很确定我必须使用unserialize方法,但是我不确定如何在上面的代码中有效地使用它。
答案 0 :(得分:2)
是的,您应该反序列化它。不要回显您的字符串,只需将它们附加到变量中即可。因此,像这样:
<?php
$serialized = '';
for ($i = 0; $i < count($data['item']->logistic_out); $i++) {
$serialized .= strtolower($data['item']->logistic_out[$i]->logistics_times);
}
?>
然后,将其反序列化,它将变成一个数组:
$unserialized = unserialize( $serialized );
现在,您可以通过foreach
遍历数组以打印出所需的内容。
请注意,即使您的序列化字符串中只有一个小错误,也将无法使用。您手动构建序列化字符串的事实令人担忧,您可能需要评估此处是否有更好的起点。