您可以将所有单词数组放到一个数组中,并使用如下 递归 函数:
function concat(array $array) { $current = array_shift($array); if(count($array) > 0) { $results = array(); $temp = concat($array); foreach($current as $word) { foreach($temp as $value) { $results[] = $word . ' ' . $value; } } return $results; } else { return $current; }}$a = array(array('dog', 'cat'), array('food', 'tooth'), array('car', 'bike'));print_r(concat($a));哪个返回:
Array( [0] => dog food car [1] => dog food bike [2] => dog tooth car [3] => dog tooth bike [4] => cat food car [5] => cat food bike [6] => cat tooth car [7] => cat tooth bike)
但是我想这对于大型数组会表现不佳,因为输出数组会很大。
为了解决这个问题,您可以使用类似的方法直接输出组合:
function concat(array $array, $concat = '') { $current = array_shift($array); $current_strings = array(); foreach($current as $word) { $current_strings[] = $concat . ' ' . $word; } if(count($array) > 0) { foreach($current_strings as $string) { concat($array, $string); }} else { foreach($current_strings as $string) { echo $string . PHP_EOL; } }}concat(array(array('dog', 'cat'), array('food', 'tooth'), array('car', 'bike')));这使:
dog food cardog food bikedog tooth cardog tooth bikecat food carcat food bikecat tooth carcat tooth bike
通过这种方法,也很容易获得“子隐患”。只需在
echo $string . PHP_EOL;之前插入
concat($array,$string);,输出为:
dog dog food dog food car dog food bike dog tooth dog tooth car dog tooth bike cat cat food cat food car cat food bike cat tooth cat tooth car cat tooth bike



