ホームページ > バックエンド開発 > PHPチュートリアル > PHP N-select-M アルゴリズムは大きな配列を出力できません

PHP N-select-M アルゴリズムは大きな配列を出力できません

WBOY
リリース: 2016-06-20 12:42:37
オリジナル
1026 人が閲覧しました

function Combination($sort, $num){    $result = $data = array();    if( $num == 1 ) {        return $sort;    }    foreach( $sort as $k=>$v ) {        unset($sort[$k]);        $data   = Combination($sort,$num-1);        foreach($data as $row) {            $result[] = $v.','.$row;        }    }    return $result;}$starttime = explode(' ',microtime());$arr    = array(1,2,3,4,5,6,7,8,9,1,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33);//这个是组合$res        = Combination($arr,6);print_r($res);$endtime = explode(' ',microtime());$thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);$thistime = round($thistime,3);echo "本网页执行耗时:".$thistime." 秒";
ログイン後にコピー

色々試しましたが、33個中5個を選択すると1秒以上で出ますが、6個を選択すると500エラーが出ます。私の場合はIIS7.5+PHP5.6 FAST -CGIモードです! 500 エラーが発生するのはなぜですか? 配列が大きすぎるのでしょうか? PHP.INI を調整する必要があります。


ディスカッションへの返信 (解決策)

phpのエラー表示機能をオンにすると、 Fatal error:Allowed memory size of... と表示されます。 このようなエラー
メモリが足りません!

php に割り当てられたメモリが足りないと考えて、ini_set('memory_limit','500M') を試してください

正しく理解できているかわかりません
N select M 、許可されている場合、繰り返し値の場合は、毎回ランダムなキー名に対応する値を呼び出すだけです
繰り返し値が許可されていない場合は、shuffle() 関数を使用してランダムに配置し、最初の M 要素を直接取得します

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート