Вы не понимаете, что делает foreach
и как структурированы массивы. Итерирует по каждому элементу данного массива. Вы сказали, что ваши данные выглядят так:
$uploadData = [
'filenames' => ["2.jpeg", "3.jpeg"],
'sizes' => ["0.00 MB", "0.00 MB"],
'temp_names' => ["/private/var/folders/np/sln14hvn3tsbzc4kpjjtp17c0000gn/T/phpLVhmBY", "/private/var/folders/np/sln14hvn3tsbzc4kpjjtp17c0000gn/T/phpoifsg0"],
'uploads' => ["/Users/sandro/Documents/bildgalerie/uploads/2.jpeg", "/Users/sandro/Documents/bildgalerie/uploads/3.jpeg"],
];
Итак, это массив из 4 элементов. Каждая итерация цикла даст вам новый элемент. На первой итерации вы получаете массив ["2.jpeg", "3.jpeg"]
и пытаетесь получить доступ к элементу filenames
этого массива. Очевидно, нет ни одного.
Вместо этого вы можете просто зациклить один из под-массивов:
foreach ($uploadData["filenames"] as $key => $value) {
if (move_uploaded_file($uploadData["temp_names"][$key], $location . '/' . basename($value))) {
echo 'File uploaded.';
echo '<br>';
}
}
На первой итерации $key
будет 0
, а $value
будет 2.jpeg
. Вы можете использовать этот ключ, чтобы получить совпадающие значения в других подмассивах.