将多个表单输入组合成键对值数组并为值添加维度
Combine multiple form input into key pair value array and add dimension to value
我有以下 $_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
)
执行以下语句后得到以上输出:
print_r($_POST); die; // Code to print the $_POST array
现在,根据上面的 $_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
)
)
为此,我尝试了以下代码。
$request_Arr = array_combine ( $_POST['fileName'], $_POST['fileLink'] );
如果我打印数组 $request_Arr
执行上述代码后,它会打印以下输出:
Array (
[8.png] => filepicker.io/api/file/zZ993JyCT9KafUtXAzYd
[2_OnClick_OK.jpg] => filepicker.io/api/file/1w3cKCW1TMmytb7md3XQ
)
所以我的问题是它没有为内部数组生成 [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
)
)
有人可以纠正我的错误并帮助我创建所需格式的数组吗?
N.B.:- 仅出于演示目的,我采用了两个元素。在实际场景中,可能有数百个这样的元素。所以请考虑一个最佳和有效的方法来获得这个输出数组。
提前致谢。
另一种方法是映射所有 link 以添加另一个嵌套维度,然后最后合并。
$fileLink = array_map(function($link){ return array($link); }, $_POST['fileLink']);
$request_Arr = array_combine ( $_POST['fileName'], $fileLink );
或者,如果您可以修改标记并且它看起来像这样,并且不希望触及原始数组:
<input type="text" name="fileName[]" value="" />
<input type="text" name="fileLink[][]" value="" /> // adds another nest
然后直接合并:
$request_Arr = array_combine ( $_POST['fileName'], $_POST['fileLink'] );
另一种方法是使用 foreach 循环来构造新数组:
$array = array();
foreach ($_POST['fileName'] as $key => $value) {
$array[$value] = array($_POST['fileLink'][$key]);
}
echo '<pre>'.print_r($_POST,1).'</pre>';
我有以下 $_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
)
执行以下语句后得到以上输出:
print_r($_POST); die; // Code to print the $_POST array
现在,根据上面的 $_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
)
)
为此,我尝试了以下代码。
$request_Arr = array_combine ( $_POST['fileName'], $_POST['fileLink'] );
如果我打印数组 $request_Arr
执行上述代码后,它会打印以下输出:
Array (
[8.png] => filepicker.io/api/file/zZ993JyCT9KafUtXAzYd
[2_OnClick_OK.jpg] => filepicker.io/api/file/1w3cKCW1TMmytb7md3XQ
)
所以我的问题是它没有为内部数组生成 [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
)
)
有人可以纠正我的错误并帮助我创建所需格式的数组吗?
N.B.:- 仅出于演示目的,我采用了两个元素。在实际场景中,可能有数百个这样的元素。所以请考虑一个最佳和有效的方法来获得这个输出数组。
提前致谢。
另一种方法是映射所有 link 以添加另一个嵌套维度,然后最后合并。
$fileLink = array_map(function($link){ return array($link); }, $_POST['fileLink']);
$request_Arr = array_combine ( $_POST['fileName'], $fileLink );
或者,如果您可以修改标记并且它看起来像这样,并且不希望触及原始数组:
<input type="text" name="fileName[]" value="" />
<input type="text" name="fileLink[][]" value="" /> // adds another nest
然后直接合并:
$request_Arr = array_combine ( $_POST['fileName'], $_POST['fileLink'] );
另一种方法是使用 foreach 循环来构造新数组:
$array = array();
foreach ($_POST['fileName'] as $key => $value) {
$array[$value] = array($_POST['fileLink'][$key]);
}
echo '<pre>'.print_r($_POST,1).'</pre>';