【问题标题】:get values from keys with foreach (multidimensional array)使用 foreach(多维数组)从键中获取值
【发布时间】:2019-09-17 14:04:00
【问题描述】:

我有一个多维数组

(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

【问题讨论】:

    标签: php arrays multidimensional-array foreach key


    【解决方案1】:

    您无法理解 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。您可以使用该键来获取其他子数组中的匹配值。

    【讨论】:

    • 这样就行了:)
    猜你喜欢
    • 1970-01-01
    • 2013-04-27
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    相关资源
    最近更新 更多