php - 使用 foreach(多维数组)从键中获取值
问题描述
我有一个多维数组
(Array ( [filenames] => Array ( [0] => 2.jpeg [1] => 3.jpeg ) [sizes] => Array ( [0] => 0.00 MB [1] => 0.00 MB ) [temp_names] => Array ( [0] => /private/var/folders/np/sln14hvn3tsbzc4kpjjtp17c0000gn/T/phpLVhmBY [1] => /private/var/folders/np/sln14hvn3tsbzc4kpjjtp17c0000gn/T/phpoifsg0 ) [uploads] => Array ( [0] => /Users/sandro/Documents/bildgalerie/uploads/2.jpeg [1] => /Users/sandro/Documents/bildgalerie/uploads/3.jpeg ) ))
我想用 foreach 从特定键(如“文件名”)中获取所有值。
这是数组的一部分:
$uploadData = array(
'filenames' => array(),
'sizes' => array(),
'temp_names' => array(),
'uploads' => array()
);
这段代码还不能工作,但我不知道为什么:(
foreach ($uploadData as $row) {
if (move_uploaded_file($row['temp_names'], $location . '/' . basename($row['filenames']))) {
echo 'File uploaded.';
echo '<br>';
}
}
错误:Notice: Undefined index: filenames in X on line X
解决方案
您无法理解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
will be0
和$value
will be 2.jpeg
。您可以使用该键来获取其他子数组中的匹配值。
推荐阅读
- format - Common Lisp:用于条件格式的自定义谓词
- image - 未捕获的内部错误:递归过多 || 浏览器 || 有角度的
- excel - 如果工作簿打开超过 2 小时,则从共享工作簿中删除用户
- python - Python+web3如何获取网络符号?
- javascript - 从 Firefox 扩展中的后台脚本调用内容脚本函数的最佳方法是什么?
- javascript - Chrome 扩展 - 检查 recaptcha 没有有效的站点密钥
- google-sheets - 在 Google 表格中按条件自动递增
- c# - 在根目录下安装 NuGet 包
- python - 删除 \xf 字符
- templates - 如何从 vifm 中的模板添加新文件/目录?