PHP实现数组的笛卡尔积运算示例
本文实例讲述了PHP实现数组的笛卡尔积运算。分享给大家供大家参考,具体如下:
数组的笛卡尔积在实际中还是挺有用处的,比如计算商品的规格时就经常用到,下面写一种实现方式,如下代码
$arr=array(
array(2),
array(6,7),
array('a','b','c')
);
functiondikaer($arr){
$arr1=array();
$result=array_shift($arr);
while($arr2=array_shift($arr)){
$arr1=$result;
$result=array();
foreach($arr1as$v){
foreach($arr2as$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 ) )
如果需要输出字符串形式的结果可以把代码改成这样
functiondikaer($arr){
$arr1=array();
$result=array_shift($arr);
while($arr2=array_shift($arr)){
$arr1=$result;
$result=array();
foreach($arr1as$v){
foreach($arr2as$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字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。