jjzjj

recursion

全部标签

PHP处理递归的能力

我最近在一些地方看到有人说PHP的递归能力很差。最近写了一个用于图遍历的递归php函数,发现和java相比速度很慢。我不知道这是因为php的递归能力还是因为php通常比java慢。一些谷歌搜索揭示了这一点(http://bugs.php.net/bug.php?id=1901)[7Aug199912:25pmUTC]zeevatcvsdotphpdotnetPHP4.0(Zend)usesthestackforintensivedata,ratherthanusingtheheap.Thatmeansthatitstolerancerecursivefunctionsissignifi

php - 按父/子 ID 重组数组。递归?

我有一组位置。这些位置中的每一个都可以有子位置。每个子位置也可以有子位置,依此类推:$locations=array(array("id"=>1,"parent_id"=>0,"name"=>"England"),array("id"=>2,"parent_id"=>0,"name"=>"Scotland"),array("id"=>3,"parent_id"=>0,"name"=>"Ireland"),array("id"=>4,"parent_id"=>0,"name"=>"Wales"),array("id"=>5,"parent_id"=>1,"name"=>"EastEngl

php - array_walk_recursive 是否使用尾调用优化?

只是单纯的好奇。我在Google上找不到任何东西,我绝对不想深入研究PHP源代码。是否array_walk_recursive实现尾调用优化? 最佳答案 简答,不:)另请参阅:https://github.com/php/php-src/blob/master/ext/standard/array.c#L1097 关于php-array_walk_recursive是否使用尾调用优化?,我们在StackOverflow上找到一个类似的问题: https://s

php - 编写表达式以递归地提取括号之间的数据

我正在尝试编写一个正则表达式,将字符串拆分为匹配花括号内的单独元素。首先,它需要递归,其次,它必须返回偏移量(与PREG_OFFSET_CAPTURE一样)。我实际上认为这可能是处理这些数据的一种效率较低的方法,但我不确定是否有一种更简单、性能更高的技术。(如果你有,我很想听听!)因此,输入可以采用以下格式:Hello{#name}!I'ma{%string|sentence|bitof{#random}text}如果数据是这种格式,处理数据就足够容易了:Hello{#name}!I'ma{%string|sentence|bitofrandomtext}但是,处理时的问题是另一组花括

PHP - 从递归函数返回数组时出错

经过两个小时的摸索和谷歌搜索——我被困住了!按照标题,我试图返回一个在函数循环时建立的数组。我只想在else上返回数组变量,但它不会合作。它只是从函数中返回为空白,但是在else中我可以打印它并按预期显示。它只是不会返回$open_array变量中的数组。任何想法(或滥用)将不胜感激!functionfind_parent($number,$open=false){if(isset($other_variable[$number])){foreach($other_variable[$number]as$val){$open[$val->id]=[$val->id;$open=find

PHP:引用在递归调用之间共享

我有三个函数,foo、bar和baz,在我看来,它们应该产生相同的结果。但是,我遇到了一个问题,即引用在递归函数调用之间共享。$array=array('subs'=>array('a'=>1,'b'=>2,),);functionfoo(&$array,$value,$callAgain=true){$subs=&$array['subs'];foreach($subsas&$sub)$sub=$value;if($callAgain){$copy=$array;foo($copy,$value+1,false);}}functionbar(&$array,$value,$callA

PHP RecursiveIteratorIterator 和嵌套集合

我在层次结构中有一组对象。有一个顶级“根”节点,它有子节点,子节点又有子节点等。我正在尝试使用嵌套集模型将这个结构保存到数据库中,其中每个节点的每个“边”都被编号以定义层次结构,如ManagingHierarchicalDatainMySQL:(来源:mysql.com)我的问题是计算左右值。我通常使用RecursiveIteratorIterator来迭代层次结构,但我不知道如何在不求助于通过引用解析索引变量的递归函数的情况下计算数字。有什么想法吗?它可能没有用,但这是我目前拥有的(不正确的)代码:$iterator=newRecursiveIteratorIterator(newN

PHP递归多维循环

$printArr=recursive($newArray);//callsrecursivefunction$data=[];var_dump($data);var_dump($printArr);functionrecursive($array,$level=0){$searchingValue='tableName';foreach($arrayas$key=>$value){//If$valueisanarray.if(is_array($value)){recursive($value,$level+1);}else{//Itisnotanarray,soprintitout

php - 论坛中的递归引用

我在一个用PHP编写的网站上为我自己的个人论坛编写了一个报价功能。消息引用标签看起来像[quote=username]message[/quote],所以我写了那个函数:$str=preg_replace('#\[quote=(.*?)\](.*?)\[/quote\]#is','$1wrote:$2',$str);如果引用是一个,这个就可以用,但是用户引用一个引用,这个就不行了。所以我需要一种递归引用来应用这种行为。我试着搜索了很多主题,但我真的不明白它是如何工作的。对于进行此类操作的任何建议/提示,我们将不胜感激!让我知道,谢谢!编辑最后,这是我自己的解决方案:if(preg_ma

PHP递归删除函数

我编写了用于删除文件夹的递归PHP函数。我想知道,如何修改此功能以删除虚拟主机中的所有文件和文件夹,不包括给定的文件和文件夹名称数组(例如cgi-bin、.htaccess)?顺便说一下使用这个函数来完全删除这样调用的目录recursive_remove_directory('path/to/directory/to/delete');要使用此函数清空目录,请这样调用:recursive_remove_directory('path/to/full_directory',TRUE);现在的功能是functionrecursive_remove_directory($directory,