将多个表单输入组合成键对值数组并为值添加维度

PHP*_*Fan 2 php arrays associative-array key-value multidimensional-array

我有以下$_POST数组:

Array
(
    [fileName] => Array
        (
            [0] => 8.png
            [1] => 2_OnClick_OK.jpg
        )

    [fileLink] => Array
        (
            [0] => https://www.filepicker.io/api/file/zZ993JyCT9KafUtXAzYd
            [1] => https://www.filepicker.io/api/file/1w3cKCW1TMmytb7md3XQ
        )

    [Submit] => Submit File
)
Run Code Online (Sandbox Code Playgroud)

执行以下语句后,我得到了上述输出:

print_r($_POST); die; // Code to print the $_POST array
Run Code Online (Sandbox Code Playgroud)

现在从上面的$_POST数组中,我必须创建一个新的所需数组,打印后其结构如下:

Array
        (
            [8.png] => Array
                (
                    [0] => https://www.filepicker.io/api/file/zZ993JyCT9KafUtXAzYd
                )
            [2_OnClick_OK.jpg]
                (
                    [0] => https://www.filepicker.io/api/file/1w3cKCW1TMmytb7md3XQ
                )   

        )
Run Code Online (Sandbox Code Playgroud)

为此,我尝试了以下代码。

 $request_Arr = array_combine ( $_POST['fileName'], $_POST['fileLink'] );
Run Code Online (Sandbox Code Playgroud)

执行上述代码后,如果我打印数组,$request_Arr它会打印以下输出:

 Array ( 
    [8.png] => filepicker.io/api/file/zZ993JyCT9KafUtXAzYd 
    [2_OnClick_OK.jpg] => filepicker.io/api/file/1w3cKCW1TMmytb7md3XQ 
)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是它没有[0]为内部数组生成索引键。我想要带有[0]索引键的新数组如下:

Array
 (
    [8.png] => Array
    (
        [0] => https://www.filepicker.io/api/file/zZ993JyCT9KafUtXAzYd
    )
    [2_OnClick_OK.jpg]
    (
        [0] => https://www.filepicker.io/api/file/1w3cKCW1TMmytb7md3XQ
    )   
)
Run Code Online (Sandbox Code Playgroud)

有人可以纠正我的错误并帮助我以所需格式创建数组吗?

注意:-仅出于演示目的,我采用了两个元素。在实际场景中,可能有数百个这样的元素。所以请考虑一个最佳和有效的方法来获得这个输出数组。

提前致谢。

Kev*_*vin 5

另一种方法是映射所有链接以添加另一个嵌套维度,然后最终组合。

$fileLink = array_map(function($link){ return array($link); }, $_POST['fileLink']);
$request_Arr = array_combine ( $_POST['fileName'], $fileLink );
Run Code Online (Sandbox Code Playgroud)

或者,如果您可以修改标记并且它看起来像这样,并且不想接触原始数组:

<input type="text" name="fileName[]" value="" />
<input type="text" name="fileLink[][]" value="" /> // adds another nest
Run Code Online (Sandbox Code Playgroud)

然后直接结合:

$request_Arr = array_combine ( $_POST['fileName'], $_POST['fileLink'] );
Run Code Online (Sandbox Code Playgroud)