繁体   English   中英

如果为false,则foreach循环中的if语句使用最后一个true值

[英]if statement in foreach loop using last true value when false

我有一个用if-else语句循环的数组。 条件是,如果名称以点开头,则将字符串放入$gridNames否则将字符串放入$cssNames 某种程度上,对于$gridNames有效的$gridNames将用于循环的其余部分,尽管条件是错误的。

这是$selector["name"]数组:

string(4) ".row"
string(10) ".inner_row"
string(7) ".column"
string(13) ".inner_column"
string(12) "hey im a div"
string(8) "column 1"
string(5) "row 2"

和代码本身:

foreach ($element_css["element_css"] as $selector) {
  $name = $selector["name"];
  $lenght = strlen($name);
  $firstLetter = substr($name, 0, -($lenght - 1));
  if ($firstLetter == ".") {
      $gridName = substr($name, 1, $lenght);
  } else {
      $nameByWords = explode(" ", $name);
      foreach ($nameByWords as $word) {
        $allWords .= $word;
      }
      $cssName = $allWords;
      $allWords = "";
  }
  var_dump($gridName);
}

var_dump给我:

string(3) "row"
string(9) "inner_row"
string(6) "column"
string(12) "inner_column"
string(12) "inner_column"
string(12) "inner_column"
string(12) "inner_column"

我想要的结果是:

string(3) "row"
string(9) "inner_row"
string(6) "column"
string(12) "inner_column"

var_dump($grid_name)将在循环的每次迭代中执行,因为这是在if-else条件之外编写的,因此对于最后3个字符串, $grid_name不会改变,但var_dump()将执行,因此$grid_name的最后一个值用于显示。

您从未将$gridName设置$gridName任何值,那么您期望什么? 您可以将其设置为NULL""具体取决于您想要的是在循环开始时还是在else子句中。 后者效率更高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM