Объединить несколько форм ввода в массив значений пары ключей и добавить измерение к значению

У меня есть следующие $_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. :- Только для демонстрации я взял два элемента. В реальном сценарии могут быть сотни таких элементов. Поэтому, пожалуйста, рассмотрите оптимальный и эффективный способ получить этот выходной массив.

Заранее спасибо.

2

Решение

Другим способом было бы сопоставить всю ссылку, чтобы добавить другое измерение гнезда, а затем объединить.

$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'] );
4

Другие решения

Другой способ — использовать цикл foreach для создания нового массива:

$array = array();
foreach ($_POST['fileName'] as $key => $value) {
$array[$value] = array($_POST['fileLink'][$key]);
}

echo '<pre>'.print_r($_POST,1).'</pre>';
1

По вопросам рекламы [email protected]