简体   繁体   English

通过这些数组在php中具有相同的长度,从多维数组创建一个新数组

[英]Create a new array from a multidimensional array by those arrays have same length in php

I've a multidimensional array looks like below-我有一个多维数组,如下所示-

Array
(
    [0] => Array
        (
            [0] => Account Number
            [1] => Account Title
            [2] => Account Type
            [3] => Currency
            [4] => Available Balance
            [5] => Ledger Balance
        )

    [1] => Array
        (
            [0] => xxxxxxxx YYYYYYY
        )

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

    [3] => Array
        (
            [0] => Date
            [1] => Description
            [2] => Withdrawal
            [3] => Deposit
            [4] => Balance
        )

    [4] => Array
        (
            [0] => 
        )

    [5] => Array
        (
            [0] => `30/08/2018
            [1] => EXIM 5287609
            [2] => -
            [3] => 25000.00
            [4] => 62672.880
        )

    [6] => Array
        (
            [0] => `03/09/2018
            [1] => PRIME 9373059
            [2] => -
            [3] => 191920.00
            [4] => 254592.880
        )

    [7] => Array
        (
            [0] => `04/09/2018
            [1] => RV CLEARING FEE-CHQ 9373059
            [2] => 8.70
            [3] => -
            [4] => 254584.180
        )

    [8] => Array
        (
            [0] => `04/09/2018
            [1] => VAT AT SOURCE
            [2] => 1.30
            [3] => -
            [4] => 254582.880
        )

    [9] => Array
        (
            [0] => `04/09/2018
            [1] => ATM WDR AT 4503 13:55:02
            [2] => 20000.00
            [3] => -
            [4] => 234582.880
        )

    [10] => Array
        (
            [0] => `08/09/2018
            [1] => ATM WDR AT 4504 11:58:19
            [2] => 10000.00
            [3] => -
            [4] => 224582.880
        )

    [11] => Array
        (
            [0] => `09/09/2018
            [1] => ATM WDR AT 4500 20:05:19
            [2] => 40000.00
            [3] => -
            [4] => 184582.880
        )

    [12] => Array
        (
            [0] => `09/09/2018
            [1] => ATM WDR AT 4500 20:05:59
            [2] => 40000.00
            [3] => -
            [4] => 144582.880
        )

    [13] => Array
        (
            [0] => `09/09/2018
            [1] => ATM WDR AT 4500 20:06:37
            [2] => 20000.00
            [3] => -
            [4] => 124582.880
        )

    [14] => Array
        (
            [0] => `12/09/2018
            [1] => B ASIA 5904486
            [2] => -
            [3] => 490000.00
            [4] => 614582.880
        )

    [15] => Array
        (
            [0] => `12/09/2018
            [1] => B ASIA 5904486 RETURN
            [2] => 490000.00
            [3] => -
            [4] => 124582.880
        )

    [16] => Array
        (
            [0] => `12/09/2018
            [1] => RV CLEARING FEE-CHQ 5904486
            [2] => 8.70
            [3] => -
            [4] => 124574.180
        )

    [17] => Array
        (
            [0] => `12/09/2018
            [1] => VAT AT SOURCE
            [2] => 1.30
            [3] => -
            [4] => 124572.880
        )

    [18] => Array
        (
            [0] => `12/09/2018
            [1] => ATM WDR AT 4500 12:31:55
            [2] => 20000.00
            [3] => -
            [4] => 104572.880
        )

    [19] => Array
        (
            [0] => `13/09/2018
            [1] => ATM WDR AT 4503 14:59:28
            [2] => 20000.00
            [3] => -
            [4] => 84572.880
        )

    [20] => Array
        (
            [0] => `16/09/2018
            [1] => ATM WDR AT 4500 17:10:04
            [2] => 10000.00
            [3] => -
            [4] => 74572.880
        )

    [21] => Array
        (
            [0] => `19/09/2018
            [1] => B ASIA 5904486
            [2] => -
            [3] => 490000.00
            [4] => 564572.880
        )

    [22] => Array
        (
            [0] => `19/09/2018
            [1] => ATM WDR AT 4502 16:24:29
            [2] => 40000.00
            [3] => -
            [4] => 524572.880
        )

    [23] => Array
        (
            [0] => `19/09/2018
            [1] => ATM WDR AT 4502 16:25:12
            [2] => 10000.00
            [3] => -
            [4] => 514572.880
        )

    [24] => Array
        (
            [0] => `20/09/2018
            [1] => B ASIA 5904486 RETURN
            [2] => 490000.00
            [3] => -
            [4] => 24572.880
        )

    [25] => Array
        (
            [0] => `20/09/2018
            [1] => RV CLEARING FEE-CHQ 5904486
            [2] => 8.70
            [3] => -
            [4] => 24564.180
        )

    [26] => Array
        (
            [0] => `20/09/2018
            [1] => VAT AT SOURCE
            [2] => 1.30
            [3] => -
            [4] => 24562.880
        )

    [27] => Array
        (
            [0] => `22/09/2018
            [1] => ATM WDR AT 4500 14:09:11
            [2] => 15000.00
            [3] => -
            [4] => 9562.880
        )

    [28] => Array
        (
            [0] => `24/09/2018
            [1] => CASH DEPOSIT
            [2] => -
            [3] => 100000.00
            [4] => 109562.880
        )

    [29] => Array
        (
            [0] => `25/09/2018
            [1] => EFT TO PRIME BANK LT
            [2] => 45000.00
            [3] => -
            [4] => 64562.880
        )

    [30] => Array
        (
            [0] => `26/09/2018
            [1] => ATM WDR AT 4503 11:06:25
            [2] => 5000.00
            [3] => -
            [4] => 59562.880
        )

)

Now I need a new array looks like below-现在我需要一个如下所示的新数组-

array(
[1] => Array
        (
            [0] => Date
            [1] => Description
            [2] => Withdrawal
            [3] => Deposit
            [4] => Balance
        )
    [2] => Array
        (
            [0] => `30/08/2018
            [1] => EXIM 5287609
            [2] => -
            [3] => 25000.00
            [4] => 62672.880
        )

    [3] => Array
        (
            [0] => `03/09/2018
            [1] => PRIME 9373059
            [2] => -
            [3] => 191920.00
            [4] => 254592.880
        )

    [4] => Array
        (
            [0] => `04/09/2018
            [1] => RV CLEARING FEE-CHQ 9373059
            [2] => 8.70
            [3] => -
            [4] => 254584.180
        )

    [5] => Array
        (
            [0] => `04/09/2018
            [1] => VAT AT SOURCE
            [2] => 1.30
            [3] => -
            [4] => 254582.880
        )

    [6] => Array
        (
            [0] => `04/09/2018
            [1] => ATM WDR AT 4503 13:55:02
            [2] => 20000.00
            [3] => -
            [4] => 234582.880
        )

    [7] => Array
        (
            [0] => `08/09/2018
            [1] => ATM WDR AT 4504 11:58:19
            [2] => 10000.00
            [3] => -
            [4] => 224582.880
        )

    [8] => Array
        (
            [0] => `09/09/2018
            [1] => ATM WDR AT 4500 20:05:19
            [2] => 40000.00
            [3] => -
            [4] => 184582.880
        )

    [9] => Array
        (
            [0] => `09/09/2018
            [1] => ATM WDR AT 4500 20:05:59
            [2] => 40000.00
            [3] => -
            [4] => 144582.880
        )

    [10] => Array
        (
            [0] => `09/09/2018
            [1] => ATM WDR AT 4500 20:06:37
            [2] => 20000.00
            [3] => -
            [4] => 124582.880
        )

    [11] => Array
        (
            [0] => `12/09/2018
            [1] => B ASIA 5904486
            [2] => -
            [3] => 490000.00
            [4] => 614582.880
        )

    [12] => Array
        (
            [0] => `12/09/2018
            [1] => B ASIA 5904486 RETURN
            [2] => 490000.00
            [3] => -
            [4] => 124582.880
        )

    [13] => Array
        (
            [0] => `12/09/2018
            [1] => RV CLEARING FEE-CHQ 5904486
            [2] => 8.70
            [3] => -
            [4] => 124574.180
        )

    [14] => Array
        (
            [0] => `12/09/2018
            [1] => VAT AT SOURCE
            [2] => 1.30
            [3] => -
            [4] => 124572.880
        )

    [15] => Array
        (
            [0] => `12/09/2018
            [1] => ATM WDR AT 4500 12:31:55
            [2] => 20000.00
            [3] => -
            [4] => 104572.880
        )

    [16] => Array
        (
            [0] => `13/09/2018
            [1] => ATM WDR AT 4503 14:59:28
            [2] => 20000.00
            [3] => -
            [4] => 84572.880
        )

    [17] => Array
        (
            [0] => `16/09/2018
            [1] => ATM WDR AT 4500 17:10:04
            [2] => 10000.00
            [3] => -
            [4] => 74572.880
        )

    [18] => Array
        (
            [0] => `19/09/2018
            [1] => B ASIA 5904486
            [2] => -
            [3] => 490000.00
            [4] => 564572.880
        )

    [19] => Array
        (
            [0] => `19/09/2018
            [1] => ATM WDR AT 4502 16:24:29
            [2] => 40000.00
            [3] => -
            [4] => 524572.880
        )

    [20] => Array
        (
            [0] => `19/09/2018
            [1] => ATM WDR AT 4502 16:25:12
            [2] => 10000.00
            [3] => -
            [4] => 514572.880
        )

    [21] => Array
        (
            [0] => `20/09/2018
            [1] => B ASIA 5904486 RETURN
            [2] => 490000.00
            [3] => -
            [4] => 24572.880
        )

    [22] => Array
        (
            [0] => `20/09/2018
            [1] => RV CLEARING FEE-CHQ 5904486
            [2] => 8.70
            [3] => -
            [4] => 24564.180
        )

    [23] => Array
        (
            [0] => `20/09/2018
            [1] => VAT AT SOURCE
            [2] => 1.30
            [3] => -
            [4] => 24562.880
        )

    [24] => Array
        (
            [0] => `22/09/2018
            [1] => ATM WDR AT 4500 14:09:11
            [2] => 15000.00
            [3] => -
            [4] => 9562.880
        )

    [25] => Array
        (
            [0] => `24/09/2018
            [1] => CASH DEPOSIT
            [2] => -
            [3] => 100000.00
            [4] => 109562.880
        )

    [26] => Array
        (
            [0] => `25/09/2018
            [1] => EFT TO PRIME BANK LT
            [2] => 45000.00
            [3] => -
            [4] => 64562.880
        )

    [27] => Array
        (
            [0] => `26/09/2018
            [1] => ATM WDR AT 4503 11:06:25
            [2] => 5000.00
            [3] => -
            [4] => 59562.880
        )
)

I know by using a loop I can separate my desired arrays and can crate a new array.我知道通过使用循环,我可以分离我想要的数组并可以创建一个新数组。 But without any loop, is it possible to create a new array by PHP built in method?但是没有任何循环,是否可以通过PHP内置方法创建一个新数组?

Advance thanks for all of you who will give me a nice solution.提前感谢你们所有人,他们会给我一个很好的解决方案。

Note:- array will be too long.注意:- 数组会太长。 It's a bank transaction array so need a fast method which will give output within the shortest time.这是一个银行交易数组,所以需要一个快速的方法来在最短的时间内给出输出。

You can filter arrays based on it length using array_filter()您可以使用array_filter()根据它的长度过滤数组

$newArr = array_filter($arr, function($item){
    return sizeof($item) == 5;
});

If your array is large and you need a fast method, use foreach instead如果您的数组很大并且需要快速方法,请改用foreach

foreach ($arr as $key=>$item)
    sizeof($item) != 5 ? unset($arr[$key]) : "";

All activities on one go...一次完成所有活动...

$length=count($arr);

for($i=0;$i<$length;$i++){
    if(count($arr[$i])==4){
       // execute desired process 
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM