簡體   English   中英

PHP:以新順序放置數組條目

[英]PHP: put array entries in new order

我嘗試采用以下數組:

Array
(
[0] => Array
    (
        [1] => 12
        [2] => 21
        [3] => 33
    )

[1] => Array
    (
        [1] => 5
        [2] => 5
        [3] => 4
    )

[2] => Array
    (
        [1] => 1
        [2] => 10
        [3] => 11
    )

[3] => Array
    (
        [3] => 2
    )

並使用它創建一個新數組,並獲取源數組的第一個條目。 因此,第一個數組看起來像這樣:

 Array
(
[0] => 12
[1] => 5
[2] => 1
[3] => 2
 )

第二個顯然是這樣的:

 Array
(
[0] => 21
[1] => 5
[2] => 10
 )

我嘗試了2 for循環,它與

for ($i = 1; $i < count($month_array[$i]) + 1; $i++)
{
    unset($temp_array);
    for ($i2 = 0; $i2 < count($month_array); $i2++)
    {
        if (isset($month_array[$i2][$i]))
        {
            $temp_array[] = $month_array[$i2][$i];
        }
    }
}  

但是它會忽略一些元素,如果源數組不完整,這意味着只有第三個數組具有鍵3的值,它也會失敗。 有什么幫助嗎? 非常感謝 !

像這樣嘗試:

$org_array = array(array(1 => 12,2 => 21,3 => 33),array(1 => 5,2 => 5,3 => 4),array(1 => 1,2 => 10,3 => 11),array(3 => 2),); // your original array

$new_array = array(); // the output array
foreach($org_array as $sub_org_value) { // for each sub array of your original array do this
    foreach($sub_org_value as $key => $value) { // for each entry in a sub array do this
        $new_array[$key][] = $value; // add the entry into the new_array in the right sub array
    }
}

print_r($new_array[1]); // yields 12,5,1
print_r($new_array[2]); // yields 21,5,10
print_r($new_array[3]); // yields 33,4,11,2

之后,您將獲得一個包含三個數組的數組$new_array 第一個子數組具有所有1個值,第二個子數組具有所有2個值,第三個子數組具有所有3個值。

暫無
暫無

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

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