php递归函数返回数组

Posted

技术标签:

【中文标题】php递归函数返回数组【英文标题】:php recursive function return array 【发布时间】:2015-04-27 01:15:47 【问题描述】:

这里是原函数(递归函数):

function permute($items, $perms = array()) 

    if (empty($items)) 
     
        echo join('', $perms).'<br>';
      
    else 
    
        for ($i = 0; $i < count($items); ++$i) 
        
             $newitems = $items;
             $newperms = $perms;
             $foo = implode(array_splice($newitems, $i, 1));
             array_unshift($newperms, $foo);
             permute($newitems, $newperms);
        
    

permute(array("A", 'B', 'C'));

在这种情况下,输出将是:

cba
bca
cab
acb
bac
abc

如何修改这部分:

if (empty($items)) 
 
    echo join('', $perms).'<br>';
 

改成返回字符串数组,而不是直接在函数中回显?

【问题讨论】:

【参考方案1】:

试试这个 (IdeOne example):

function permute($items, $perms = array(), $result = array()) 

if (empty($items)) 
 
    $result[] = join('', $perms);
  
else 

    for ($i = 0; $i < count($items); ++$i) 
    
         $newitems = $items;
         $newperms = $perms;
         $foo = implode(array_splice($newitems, $i, 1));
         array_unshift($newperms, $foo);
         $result = permute($newitems, $newperms, $result);
    

return $result;

$bar = permute(array("A", 'B', 'C'));

var_dump($bar);

【讨论】:

以上是关于php递归函数返回数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP递归函数返回concat字符串

php 递归 返回数组

PHP 递归函数 - 如何避免使用全局变量

从递归函数expressjs返回空数组?

php检测数组长度函数sizeof与count用法

Ruby:应该从子数组返回最大值数组的递归函数的问题