簡體   English   中英

子數組中的PHP Split數組

[英]PHP Split array in subarrays

注意,array_chunk不是我的解決方案(在我看來)。

我有大約150.000個元素的數組

Array
(
    [0] => Array
        (
            [name] => Danilo
            [phone] => 33568
        )

    [1] => Array
        (
            [name] => Alessandro
            [phone] => 392222
        )

    [2] => Array
        (
            [name] => Alex
            [phone] => 3922
        )

    [3] => Array
        (
            [name] => Capa
            [phone] => 392
        )

)

等等。 我會將這個數組分成幾個數組,例如每個數組有3.000個元素。

我看到了array_chunk,但是它返回了一個帶有多個子數組的數組。

我需要幾個子數組將它們存儲在數據庫中,並在以后進行詳細說明。

我發瘋了,從$ temp開始編寫一個片段,並將其分成較小的數組。

$size_chunks = 1;

        $temp = array_chunk($recipients, $size_chunks);

        foreach ($temp as $key=>$value)
        {
            if ($key<$size_chunks)
            {
                $to_store[] = $temp[$key];  
            }
            //print_r($to_store);
            // pseudo sql
            // INSERT INTO table (sub_recipient) VALUES ($to_store);
            $to_store = array();

        }

因此,每次for循環結束時,降低溫度,存儲$ to_store數組,然后為其他塊重新啟動。

非常感謝你。

我的示例塊中的PS == 1,因為起始數組很小...;)

在我的chunk = 1的示例中,我需要從數組開始這4個數組:

Array
(
    [0] => Array
        (
            [name] => Danilo
            [phone] => 33568
        )
)

Array
    (
        [0] => Array
            (
                [name] => Alessandro
                [phone] => 39222
            )
    )

Array
        (
            [0] => Array
                (
                    [name] => Alex
                    [phone] => 39222
                )
        )

Array
        (
            [0] => Array
                (
                    [name] => Capa
                    [phone] => 392
                )
        )

另一個解釋

1-以15.000個元素的起始數組和3.000個塊為例,我需要輸入(15.000 / 3.000)= 5個數組。 我將它們保存在數據庫中,因此在DB中,我將有5行(每個數組一行)。

2-以4個元素為起始數組,塊為1,我需要在輸出(4/1)= 4個數組中輸入。 我將它們保存在數據庫中,因此在DB中,我將有4行(每個數組一行)。

array_chunks()已經array_chunks()您的要求,只需保存即可:

$chunks = array_chunk($array, $size_chunks);

foreach ($chunks as $chunk) {
    // save $chunk to your database
}
$recipients = Array(
                    Array("fdbvfdb","dsacsdcds"),
                    Array("hrloo","dacdsc"),
                    Array("dcsdc","adcsd"),
                    Array("dcsdc","adcsd")
                );
$total = count($recipients);//count 150.000 elements
$i=1;
for($i=0;$i<$total;$i++){
$O = array_slice($recipients,$i,1);
print_r($O);
//Your insert/Save code
}

您可以使用此代碼,還有使用Array_Slice

暫無
暫無

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

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