簡體   English   中英

遍歷多維數組以創建新數組

[英]Looping through a multidimentional array to create new arrays

我有一個數組(通過上傳多個文件產生),返回以下內容:

Array
(
[name] => Array
    (
        [0] => lightshow.png
        [1] => mia.guyana.jpg
        [2] => skanking.jpg
    )

[type] => Array
    (
        [0] => image/png
        [1] => image/jpeg
        [2] => image/jpeg
    )

[tmp_name] => Array
    (
        [0] => /Applications/MAMP/tmp/php/phph7f4nD
        [1] => /Applications/MAMP/tmp/php/phppS2YDH
        [2] => /Applications/MAMP/tmp/php/phptebtKr
    )

[error] => Array
    (
        [0] => 0
        [1] => 0
        [2] => 0
    )

[size] => Array
    (
        [0] => 160325
        [1] => 153524
        [2] => 29054
    )

)  

我需要將每個鍵值對拉入foreach循環內的單獨數組中,以進行處理,返回的結果如下:

Array
(
[name] => lightshow.png
[type] => image/png
[tmp_name] => /Applications/MAMP/tmp/php/phph7f4nD
[error] => 0
[size] => 160325
)

有任何想法嗎?

$result = array();
foreach( $original_array as $key => $category ) {
   foreach( $category as $index => $value ) {
      $result[$index][$key] = $value;
   }
}

謝謝大家,我在測試了jsaloen和Sean的答案后,最終回答了我自己的問題,這些答案雖然很接近,但並不是我想要的。 我的解決方案可能有點束手無策,但是行得通!

    if (isset($_FILES['files'])) {

        $userfiles = $_FILES['files'];

        $limit = count($userfiles['name']);

        $i = 0;

        while ($i < $limit) {           

                $userfile = array(
                'name' => $userfiles['name'][$i],
                'type' => $userfiles['type'][$i],
                'tmp_name' => $userfiles['tmp_name'][$i],
                'error' => $userfiles['error'][$i],
                'size' => $userfiles['size'][$i]
            );

            $i++;

            echo "<pre>";
            print_r($userfile);
            echo "</pre>";

        }

    }

我還沒有嘗試過deceze的答案,我還不太了解! 它利用了我還沒有學到的東西!

相當重復,但是有效:

$merged = array_map(function ($name, $type, $tmp_name, $error, $size) {
    return compact('name', 'type', 'tmp_name', 'error', 'size');
}, $array['name'], $array['type'], $array['tmp_name'], $array['error'], $array['size']);

我會這樣。

//our end result array
$NewArray = array();

//loop through the array
foreach( $Array as $Key => $inner_array )
{
    $i = 0;

    //setup temp array to populate
    $TempArray = array();


    foreach( $inner_array as $inner_key => $inner_value )
    {
        //loop through the inner value
        $TempArray[$inner_key] = $inner_array[$i];
    }

    $i++;

    //setup the next key to be the temp array
    $NewArray[] = $TempArray;

}

這將返回一個類似的數組

 Array(
        Array
        (
            [name] => lightshow.png
            [type] => image/png
            [tmp_name] => /Applications/MAMP/tmp/php/phph7f4nD
            [error] => 0
            [size] => 160325
        )
        Array
        (
            [name] => lightshow.png
            [type] => image/png
            [tmp_name] => /Applications/MAMP/tmp/php/phph7f4nD
            [error] => 0
            [size] => 160325
        )
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM