首頁 > 後端開發 > php教程 > 詳解PHP實現數組的笛卡爾積運算

詳解PHP實現數組的笛卡爾積運算

小云云
發布: 2023-03-17 22:52:01
原創
2252 人瀏覽過

本文主要介紹了PHP實現數組的笛卡爾積運算,結合實例形式分析了php數組的笛卡爾積運算相關實現與使用技巧,需要的朋友可以參考下,希望能幫助到大家。

數組的笛卡爾積在實際中還挺有用處的,比如計算商品的規格時就經常用到,下面寫一種實現方式,如下代碼


$arr = array(
  array(2),
  array(6,7),
  array('a','b','c')
);
function dikaer($arr){
 $arr1 = array();
 $result = array_shift($arr);
 while($arr2 = array_shift($arr)){
  $arr1 = $result;
  $result = array();
  foreach($arr1 as $v){
   foreach($arr2 as $v2){
    if(!is_array($v))$v = array($v);
    if(!is_array($v2))$v2 = array($v2);
    $result[] = array_merge_recursive($v,$v2);
   }
  }
 }
 return $result;
}
登入後複製

以上範例輸出的結果如下:


Array
(
  [0] => Array
    (
      [0] => 2
      [1] => 6
      [2] => a
    )
  [1] => Array
    (
      [0] => 2
      [1] => 6
      [2] => b
    )
  [2] => Array
    (
      [0] => 2
      [1] => 6
      [2] => c
    )
  [3] => Array
    (
      [0] => 2
      [1] => 7
      [2] => a
    )
  [4] => Array
    (
      [0] => 2
      [1] => 7
      [2] => b
    )
  [5] => Array
    (
      [0] => 2
      [1] => 7
      [2] => c
    )
)
登入後複製

如果需要輸出字串形式的結果可以把程式碼改成這樣


function dikaer($arr){
 $arr1 = array();
 $result = array_shift($arr);
 while($arr2 = array_shift($arr)){
  $arr1 = $result;
  $result = array();
  foreach($arr1 as $v){
   foreach($arr2 as $v2){
    $result[] = $v.','.$v2;
   }
  }
 }
 return $result;
}
登入後複製

輸出結果如下所示:

Array
(
  [0] => 2,6,a
  [1] => 2,6,b
  [2] => 2,6,c
  [3] => 2,7,a
  [4] => 2,7,b
  [5] => 2,7,c
)
登入後複製

相關推薦:

php自訂函數產生笛卡爾積的方法

PHP自訂函數產生笛卡爾積

多個陣列求笛卡爾積

#

以上是詳解PHP實現數組的笛卡爾積運算的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板