ホームページ  >  記事  >  バックエンド開発  >  PHP カスタム関数はデカルト積を生成します

PHP カスタム関数はデカルト積を生成します

WBOY
WBOYオリジナル
2016-08-08 09:26:271379ブラウズ
<?php
	$color = array(&#39;red&#39;, &#39;green&#39;);
	$size = array(39, 40, 41);
	$local = array(&#39;beijing&#39;, &#39;shanghai&#39;);
	
	echo "<pre class="brush:php;toolbar:false">";
	print_r(combineDika($color, $size, $local));
	
	/**
	 * 所有数组的笛卡尔积
	 *
	 * @param unknown_type $data
	 */
	function combineDika() {
		$data = func_get_args();
		$cnt = count($data);
		$result = array();
		foreach($data[0] as $item) {
			$result[] = array($item);
		}
		for($i = 1; $i < $cnt; $i++) {
			$result = combineArray($result,$data[$i]);
		}
		return $result;
	}
	 
	/**
	 * 两个数组的笛卡尔积
	 *
	 * @param unknown_type $arr1
	 * @param unknown_type $arr2
	 */
	function combineArray($arr1,$arr2) {
		$result = array();
		foreach ($arr1 as $item1) {
			foreach ($arr2 as $item2) {
				$temp = $item1;
				$temp[] = $item2;
				$result[] = $temp;
			}
		}
		return $result;
	}
?>

実行結果:

Array
(
    [0] => Array
        (
            [0] => red
            [1] => 39
            [2] => beijing
        )

    [1] => Array
        (
            [0] => red
            [1] => 39
            [2] => shanghai
        )

    [2] => Array
        (
            [0] => red
            [1] => 40
            [2] => beijing
        )

    [3] => Array
        (
            [0] => red
            [1] => 40
            [2] => shanghai
        )

    [4] => Array
        (
            [0] => red
            [1] => 41
            [2] => beijing
        )

    [5] => Array
        (
            [0] => red
            [1] => 41
            [2] => shanghai
        )

    [6] => Array
        (
            [0] => green
            [1] => 39
            [2] => beijing
        )

    [7] => Array
        (
            [0] => green
            [1] => 39
            [2] => shanghai
        )

    [8] => Array
        (
            [0] => green
            [1] => 40
            [2] => beijing
        )

    [9] => Array
        (
            [0] => green
            [1] => 40
            [2] => shanghai
        )

    [10] => Array
        (
            [0] => green
            [1] => 41
            [2] => beijing
        )

    [11] => Array
        (
            [0] => green
            [1] => 41
            [2] => shanghai
        )

)


上記は、デカルト積を生成するための PHP カスタム関数を内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。