目錄
回复内容:
首頁 後端開發 php教程 php 从m个数中取n个数组合,超出内存怎么办?

php 从m个数中取n个数组合,超出内存怎么办?

Jun 06, 2016 pm 08:24 PM
php

下面是我网上找到的代码:

<code>function getCombinationToString($arr,$m)
{
    $result = array();
    if ($m ==1)
    {
        return $arr;
    }

    if ($m == count($arr))
    {
        $result[] = implode(',' , $arr);
        return $result;
    }

    $temp_firstelement = $arr[0];
    unset($arr[0]);
    $arr = array_values($arr);
    $temp_list1 = getCombinationToString($arr, ($m-1));

    foreach ($temp_list1 as $s)
    {
        $s = $temp_firstelement.','.$s;
        $result[] = $s;
    }
    unset($temp_list1);

    $temp_list2 = getCombinationToString($arr, $m);
    foreach ($temp_list2 as $s)
    {
        $result[] = $s;
    }
    unset($temp_list2);

    return $result;
}
</code>
登入後複製
登入後複製
<code>$arr=['a','b','c','d','e','f'];
getCombinationToString($arr,3);</code>
登入後複製
登入後複製

输出结果:

Array
(

<code>[0] =&gt; a,b,c
[1] =&gt; a,b,d
[2] =&gt; a,b,e
[3] =&gt; a,b,f
[4] =&gt; a,c,d
[5] =&gt; a,c,e
[6] =&gt; a,c,f
[7] =&gt; a,d,e
[8] =&gt; a,d,f
[9] =&gt; a,e,f
[10] =&gt; b,c,d
[11] =&gt; b,c,e
[12] =&gt; b,c,f
[13] =&gt; b,d,e
[14] =&gt; b,d,f
[15] =&gt; b,e,f
[16] =&gt; c,d,e
[17] =&gt; c,d,f
[18] =&gt; c,e,f
[19] =&gt; d,e,f</code>
登入後複製
登入後複製

)
现在我的$arr有几百个元素,执行后超出内存,请问该怎么办?有没有人能帮忙改进下组合的函数,我这方面很弱,不知道怎么做?

回复内容:

下面是我网上找到的代码:

<code>function getCombinationToString($arr,$m)
{
    $result = array();
    if ($m ==1)
    {
        return $arr;
    }

    if ($m == count($arr))
    {
        $result[] = implode(',' , $arr);
        return $result;
    }

    $temp_firstelement = $arr[0];
    unset($arr[0]);
    $arr = array_values($arr);
    $temp_list1 = getCombinationToString($arr, ($m-1));

    foreach ($temp_list1 as $s)
    {
        $s = $temp_firstelement.','.$s;
        $result[] = $s;
    }
    unset($temp_list1);

    $temp_list2 = getCombinationToString($arr, $m);
    foreach ($temp_list2 as $s)
    {
        $result[] = $s;
    }
    unset($temp_list2);

    return $result;
}
</code>
登入後複製
登入後複製
<code>$arr=['a','b','c','d','e','f'];
getCombinationToString($arr,3);</code>
登入後複製
登入後複製

输出结果:

Array
(

<code>[0] =&gt; a,b,c
[1] =&gt; a,b,d
[2] =&gt; a,b,e
[3] =&gt; a,b,f
[4] =&gt; a,c,d
[5] =&gt; a,c,e
[6] =&gt; a,c,f
[7] =&gt; a,d,e
[8] =&gt; a,d,f
[9] =&gt; a,e,f
[10] =&gt; b,c,d
[11] =&gt; b,c,e
[12] =&gt; b,c,f
[13] =&gt; b,d,e
[14] =&gt; b,d,f
[15] =&gt; b,e,f
[16] =&gt; c,d,e
[17] =&gt; c,d,f
[18] =&gt; c,e,f
[19] =&gt; d,e,f</code>
登入後複製
登入後複製

)
现在我的$arr有几百个元素,执行后超出内存,请问该怎么办?有没有人能帮忙改进下组合的函数,我这方面很弱,不知道怎么做?

那就不要存啊,生成一个输出一个便可以了

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

See all articles