foreach中的PHP foreach重复数据而不是转义循环

foreach中的PHP foreach重复数据而不是转义循环,php,foreach,logic,controls,conditional-statements,Php,Foreach,Logic,Controls,Conditional Statements,将以下代码视为一个代码 <?php foreach ( $alldata as $alldatakey=>$alldatavalue){ foreach ( $alldatavalue as $neededdatakey=>$neededdatavalue){ #conditions here foreach (){ if(){ $variable = $data1; } if(){ $variable .= $data2; }

将以下代码视为一个代码

<?php
foreach ( $alldata as $alldatakey=>$alldatavalue){
 foreach ( $alldatavalue as $neededdatakey=>$neededdatavalue){

  #conditions here

  foreach (){

  if(){
    $variable = $data1;
  }

  if(){
    $variable .= $data2;
  }

  if(){
    $variable .= $data3;
  }

  }


 }
  echo $variable;
}
?>

data1、data2和data3的条件正确为什么重复打印数据?

将您的
echo
语句移到此处

        }
        //echo $varibale;

    }
    echo $varibale;//Move here <-----

}
?>
}
//echo$varibale;
}
echo$varibale//搬过来

您需要从所有循环中写出极限

    <?php
    foreach ( $alldata as $alldatakey=>$alldatavalue){
     foreach ( $alldatavalue as $neededdatakey=>$neededdatavalue){

      #conditions here

      foreach (){

      if(){
        $varibale = $data1;
      }

      if(){
        $varibale .= $data2;
      }

      if(){
        $varibale .= $data3;
        break;
      }
      }
    if(!empty($data3)){
    break;
   }

     }
      echo $varibale;
    }
    ?>

unclosed
foreach}

放置
unset($varibale)在回显之后,因此您的代码如下所示

<?php
foreach ( $alldata as $alldatakey=>$alldatavalue) {
 foreach ( $alldatavalue as $neededdatakey=>$neededdatavalue) {
  foreach () {
    //internal loop
      if() {
           $variable = $data1;
      }
      if() {
           $variable .= $data2;
      }
      if() {
           $variable .= $data3;
      }

  }
 }
  echo $variable;
  unset($variable);  // we unset it here so that we only each out the subcat blocks for that key cat not concat all subs and primaries
}
?>


unclosed foreach}和put unset($varibale);在echoDave之后-我使用了它,它几乎工作得很好,但我面临着这样的问题:清除数据,因为它在循环中,如果为空,我将
$variable分配为“NIL”它还清除了NIL–如果没有任何数据,我无法插入数据库。unset变量将完全清除变量。请看你的。=正在浓缩所有内容,这就是为什么每次循环都会得到重复的原因。我有必要将数据串联起来,因为它都是一个子类别,是单个类别的结果。知道为什么它返回或拥有数组键的空数据吗?因为我们在数据库中插入数据后清除数据。所以,当foreach再次执行时,它应该包含更新的数据,但它正在清除数组中的一些值。如何避免这个问题?Dave将其作为答案发布!我要接受它!至少将
unset
想法作为答案发布。正如您前面所说,它就在那里。尝试将其移出
for
循环。我是说在最后一次大括号之后你为什么要抄答案?这已经在Shankar下面的回答中提出了。我不能,因为我正在插入数据,我想要一个接一个的插入,所以希望它刚好在第一个循环结束的上方。Amal-Neeraj的回答比Shankar的答案提前了30分钟。没有打架或抱怨。乐于分享知识。谢谢大家@尼拉库马尔:真的吗?你可能想看一看。Shankar在28分钟前发布了他的答案,15分钟前发布了NeRaJJ,这意味着在两个帖子之间有13分钟的不同。@ NeerajKumar,这不是一个战斗。阿玛尔刚做了一个点。谢谢你的出现,想考虑任何接受的答案。
<?php
foreach ( $alldata as $alldatakey=>$alldatavalue) {
 foreach ( $alldatavalue as $neededdatakey=>$neededdatavalue) {
  foreach () {
    //internal loop
      if() {
           $variable = $data1;
      }
      if() {
           $variable .= $data2;
      }
      if() {
           $variable .= $data3;
      }

  }
 }
  echo $variable;
  unset($variable);  // we unset it here so that we only each out the subcat blocks for that key cat not concat all subs and primaries
}
?>