我有一个数组循环使用if-else语句。条件是如果名称以点开头,则将字符串放在$gridNames
中,否则将字符串放在$cssNames
中。不知何故,对于$gridNames
有效的姓氏正在被用于循环的其余部分,尽管condotion是错误的。
这是$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"
答案 0 :(得分:1)
var_dump($grid_name)
将在循环的每次迭代中执行,因为这是在if-else条件之外写的,因此对于最后3个字符串,$grid_name
不会改变,但var_dump()
将执行所以$grid_name
的最后一个值将用于显示。
答案 1 :(得分:0)
你永远不会将$gridName
设置为其他任何东西,所以你期待什么?您可以将其设置为NULL
或""
,具体取决于您想要的内容,无论是在循环的开头还是在else
子句内。后者效率更高。