从简单变量

时间:2017-08-28 01:12:28

标签: php arrays string multidimensional-array

我在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(),但我不知道在这种情况下如何。 任何帮助表示赞赏。

1 个答案:

答案 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()。

然后使用一种方法从每个字符串中获取所需的数组。