Php 记住使用递归时对象的第一个字符串
这是我遇到问题的函数的一个非常简化的版本:Php 记住使用递归时对象的第一个字符串,php,recursion,Php,Recursion,这是我遇到问题的函数的一个非常简化的版本: function example(&$form) { $name = $form->getName(); foreach ($form as $sub) { if ($sub instanceof Form) { example($sub); } // need this to be the first entry of $na
function example(&$form) {
$name = $form->getName();
foreach ($form as $sub) {
if ($sub instanceof Form) {
example($sub);
}
// need this to be the first entry of $name
echo $name;
}
}
example($this->form);
我需要一种方法来保持
$name
的第一个条目的值,尝试向函数添加另一个参数
function example(&$form, $firstFormName = null) {
$name = $form->getName();
if(is_null($firstFormName))
$firstFormName = $name;
foreach ($form as $sub) {
if ($sub instanceof Form) {
example($sub, $firstFormName);
}
}
// need this to be the first entry of $name
echo $name;
}
example($this->form);
尝试向函数中添加另一个参数
function example(&$form, $firstFormName = null) {
$name = $form->getName();
if(is_null($firstFormName))
$firstFormName = $name;
foreach ($form as $sub) {
if ($sub instanceof Form) {
example($sub, $firstFormName);
}
}
// need this to be the first entry of $name
echo $name;
}
example($this->form);
只需将该值作为参数传递
function example(&$form, $init_name = null) {
$name = $form->getName();
if (empty($init_name)) {
$init_name = $name;
}
foreach ($form as $sub) {
if ($sub instanceof Form) {
example($sub, $init_name);
}
// current name
echo $name;
// initial name
echo $init_name;
}
}
只需将该值作为参数传递
function example(&$form, $init_name = null) {
$name = $form->getName();
if (empty($init_name)) {
$init_name = $name;
}
foreach ($form as $sub) {
if ($sub instanceof Form) {
example($sub, $init_name);
}
// current name
echo $name;
// initial name
echo $init_name;
}
}
沿着这些思路做的事情应该对你有用
$first_name = "";
foreach ($form as $sub) {
if ($first_name == "") {
$first_name = $sub;
}
// The rest of your for loop here...
沿着这些思路做的事情应该对你有用
$first_name = "";
foreach ($form as $sub) {
if ($first_name == "") {
$first_name = $sub;
}
// The rest of your for loop here...
除了我每次都需要
$name
来生成。因此,我需要第一个$name的副本,也需要每个$name的副本。这是一个很好的解决方案,或者如果您不希望它为null,您可以计算函数的迭代次数,并且只在第一次迭代时设置它<代码>i==1键入对象。看看你的评论。在这种情况下,在第一次迭代时将其分配给另一个名称。我已经更新了答案,以包含一个名为$firstFormName
的新变量,但每次都需要$name
生成。因此,我需要第一个$name的副本,也需要每个$name的副本。这是一个很好的解决方案,或者如果您不希望它为null,您可以计算函数的迭代次数,并且只在第一次迭代时设置它<代码>i==1键入对象。看看你的评论。在这种情况下,在第一次迭代时将其分配给另一个名称。我已经更新了答案,以包含一个名为$firstFormName