如何在PHP中将这个简单的文本块解析为多维数组?

535*_*580 6 php arrays parsing

我有一个简单的文本块; 而且,其内容是:

    txt_1(val_1,val_2,val_3).
    txt_1(val_4,val_5,val_6).
    txt_2(val_7,val_8,val_9).
    txt_3(val_10,val_11,val_12).
    txt_3(val_13,val_14,val_15).
    txt_4(val_16,val_17,val_18).

并且,在PHP代码中已经存在一个简单的数组:

$my_array = array();
Run Code Online (Sandbox Code Playgroud)

现在,我想解析这个PHP数组,如:

Array
(
    [txt_1] => Array
        (
            [0] => Array
                (
                    [0] => val_1
                    [1] => val_2
                    [2] => val_3
                )

            [1] => Array
                (
                    [0] => val_4
                    [1] => val_5
                    [2] => val_6
                )

        )

    [txt_2] => Array
        (
            [0] => Array
                (
                    [0] => val_7
                    [1] => val_8
                    [2] => val_9
                )

        )

    [txt_3] => Array
        (
            [0] => Array
                (
                    [0] => val_10
                    [1] => val_11
                    [2] => val_12
                )

            [1] => Array
                (
                    [0] => val_13
                    [1] => val_14
                    [2] => val_15
                )

        )

    [txt_4] => Array
        (
            [0] => Array
                (
                    [0] => val_16
                    [1] => val_17
                    [2] => val_18
                )

        )

)
Run Code Online (Sandbox Code Playgroud)

所有数据都是一般的.你可以用PHP帮我做吗?

Vir*_*ral 1

$input = 'txt_1(val_1,val_2,val_3).
        txt_1(val_4,val_5,val_6).
        txt_2(val_7,val_8,val_9).
        txt_3(val_10,val_11,val_12).
        txt_3(val_13,val_14,val_15).
        txt_4(val_16,val_17,val_18).'; // the input string

$temp = explode('.', $input); // seprates from .
$temp = array_filter($temp); // for cutting blank values
$temp = array_map('trim', $temp); // removes newlines

$final = [];

foreach($temp as $val)
{
    $key = strtok($val, '('); // search upto token (
    $final[$key][] = explode(',' ,strtok(')')); // advance token to )
}

unset($val, $temp); // unset non required things
Run Code Online (Sandbox Code Playgroud)

这是 的输出$final

Array
(
    [txt_1] => Array
        (
            [0] => Array
                (
                    [0] => val_1
                    [1] => val_2
                    [2] => val_3
                )

            [1] => Array
                (
                    [0] => val_4
                    [1] => val_5
                    [2] => val_6
                )

        )

    [txt_2] => Array
        (
            [0] => Array
                (
                    [0] => val_7
                    [1] => val_8
                    [2] => val_9
                )

        )

    [txt_3] => Array
        (
            [0] => Array
                (
                    [0] => val_10
                    [1] => val_11
                    [2] => val_12
                )

            [1] => Array
                (
                    [0] => val_13
                    [1] => val_14
                    [2] => val_15
                )

        )

    [txt_4] => Array
        (
            [0] => Array
                (
                    [0] => val_16
                    [1] => val_17
                    [2] => val_18
                )

        )

)
Run Code Online (Sandbox Code Playgroud)