我在php中有这个变量:
$log = "
- [ADD] Lorem Ipsum.
- [FIX] consetetur sadipscing elitr.
- [IMP] sed diam voluptua.";
我正在尝试创建以下二维数组,如:
$logarray = array (
array (
"type" => "ADD",
"description" => "Lorem Ipsum."
),
array (
"type" => "FIX",
"description" => "consetetur sadipscing elitr."
),
array (
"type" => "IMP",
"description" => "sed diam voluptua."
)
);
我正在考虑使用函数explode()
,但我不知道在这种情况下如何。
任何帮助表示赞赏。
答案 0 :(得分:1)
我们可以通过使用reg exp或完全使用PHP的字符串函数来完成此操作。 这是使用reg exp的代码:
$log = "
[ADD] Lorem Ipsum.
- [FIX] consetetur sadipscing elitr.
- [IMP] sed diam voluptua.";
$log_parts = explode('-', trim($log));
$b = array_map("type_element", $log_parts);
print_r($b);
function type_element($log_part)
{
preg_match("/\[[^\]]*\]/", $log_part, $element_type);
return array(
'type' => $element_type[0],
'description' => preg_replace("/\[[^\]]*\]/", "", $log_part)
);
}
在上面的代码中,首先,我们通过固定模式' - '使其成为一个数组。请注意,第一行的字符串没有' - ',最好删除它以使其可用于explode()。
然后使用一种方法从每个字符串中获取所需的数组。