我有一个路由元素数组(point1,point2,...)来提供给地图引擎。 我不知道我有多少分。每个点都是可能的地址数组。 我需要检查这些点的每种可能组合,但只需要一次成功的检查。
我的数组看起来像是类似于:
$point[0] = array($address1, $address2, $adress3);
$point[1] = array($address1, $address2);
$point[2] = array($address1, $address2, $adress3, $adress4);
$point[n] = ...
我想对组合执行测试:$point[0][0] - $point[1][0] - $point[2][0], $point[0][1] - $point[1][0] - $point[2][0]
,等等! :)
第一次成功的测试(找到的路线)应该结束这个功能。
我正在尝试使用递归做一些事情但是花了很多时间没有成功。
答案 0 :(得分:0)
如果我找到了你,你想拥有"cartesian product"。
这是一个示例功能:
它首先检查,如果其中一个子数组中有任何子值,然后它创建一个包含所有可能的数组合的数组并返回它。
<?php
function array_cartesian_product($arrays)
{
$result = array();
$arrays = array_values($arrays);
$sizeIn = sizeof($arrays);
$size = $sizeIn > 0 ? 1 : 0;
foreach ($arrays as $array)
$size = $size * sizeof($array);
for ($i = 0; $i < $size; $i ++)
{
$result[$i] = array();
for ($j = 0; $j < $sizeIn; $j ++)
array_push($result[$i], current($arrays[$j]));
for ($j = ($sizeIn -1); $j >= 0; $j --)
{
if (next($arrays[$j]))
break;
elseif (isset ($arrays[$j]))
reset($arrays[$j]);
}
}
return $result;
}
?>