这个foreach
循环似乎没有超过第一个IF
语句,即使此代码段中的每个语句都为真。如何修改代码以便它继续循环遍历数组和语句?
$Silhouettes = array('Skirt_Style-Pencil','Skirt_Style-Straight','Skirt_Style-A-Line','Skirt_Style-Full','Pant_Style-Straight');
$Skirt_Style=array();
$Pant_Style=array();
foreach($Silhouettes as $key => $value ){
if (in_array('Skirt_Style-Pencil', $Silhouettes)) {
$Skirt_Style = 'Pencil';
}elseif (in_array('Skirt_Style-Straight', $Silhouettes)) {
$Skirt_Style = 'Straight';
}elseif (in_array('Skirt_Style-A-Line', $Silhouettes)) {
$Skirt_Style = 'A-Line';
}elseif (in_array('Skirt_Style-Full', $Silhouettes)) {
$Skirt_Style = 'Full';
}elseif (in_array('Pant_Style-Straight', $Silhouettes)) {
$Pant_Style = 'Straight';
}
}
var_dump($Skirt_Style);
结果是:
string(6) "Pencil"
答案 0 :(得分:2)
此处的权限始终为真if (in_array('Skirt_Style-Pencil', $Silhouettes))
,因此您的循环永远不会到达任何else
个案例。
此外,您使用字符串覆盖每个循环中的$Skirt_Style
数组,而不是像这样在数组中推送字符串:$Skirt_Style[] = 'Pencil';
或array_push($Skirt_Style, 'Pencil');
只需用elseif
语句替换所有if
语句即可解决此问题。
答案 1 :(得分:1)
$Skirt_Style=array(); // create an array and put it into $Skirt_Style
$Skirt_Style = 'Pencil'; // create a string, and put it into $Skirt_Style
你的Pencil
字符串会破坏/替换你创建的数组,只留下字符串。
也许你想要
$Skirt_Style[] = 'Pencil';
^^---
代替。 []
是“array_push”的PHP快捷方式表示法。
答案 2 :(得分:1)
你覆盖了数组!
这应该有效:
$Silhouettes = array('Skirt_Style-Pencil','Skirt_Style-Straight','Skirt_Style-A-Line','Skirt_Style-Full','Pant_Style-Straight');
$Skirt_Style=array();
$Pant_Style=array();
if (in_array('Skirt_Style-Pencil', $Silhouettes))
$Skirt_Style[] = 'Pencil';
if (in_array('Skirt_Style-Straight', $Silhouettes))
$Skirt_Style[] = 'Straight';
if (in_array('Skirt_Style-A-Line', $Silhouettes))
$Skirt_Style[] = 'A-Line';
if (in_array('Skirt_Style-Full', $Silhouettes))
$Skirt_Style[] = 'Full';
if (in_array('Pant_Style-Straight', $Silhouettes))
$Pant_Style[] = 'Straight';
var_dump($Skirt_Style);
答案 3 :(得分:-1)
试试这个,对我有用。
$Silhouettes = array('Skirt_Style-Pencil','Skirt_Style-Straight','Skirt_Style-A-Line','Skirt_Style-Full','Pant_Style-Straight');
$Skirt_Style=array();
$Pant_Style=array();
for($x = 0; $x < count($Silhouettes);$x++){
if ($Silhouettes[$x] == 'Skirt_Style-Pencil') {
$Skirt_Style = 'Pencil';
}elseif ($Silhouettes[$x] == 'Skirt_Style-Straight') {
$Skirt_Style = 'Straight';
}elseif ($Silhouettes[$x] == 'Skirt_Style-A-Line') {
$Skirt_Style = 'A-Line';
}elseif ($Silhouettes[$x] == 'Skirt_Style-Full') {
$Skirt_Style = 'Full';
}elseif ($Silhouettes[$x] == 'Pant_Style-Straight') {
$Pant_Style = 'Straight';
}
var_dump($Skirt_Style);
}
答案 4 :(得分:-2)
摆脱else语句.. 如果你被解雇,那么else语句就不会被解雇....
$Silhouettes = array('Skirt_Style-Pencil','Skirt_Style-Straight','Skirt_Style-A-Line','Skirt_Style-Full','Pant_Style-Straight');
$Skirt_Style=array();
$Pant_Style=array();
foreach($Silhouettes as $key => $value ){
if (in_array('Skirt_Style-Pencil', $Silhouettes)) {
$Skirt_Style = 'Pencil';
}
if (in_array('Skirt_Style-Straight', $Silhouettes)) {
$Skirt_Style = 'Straight';
}
if (in_array('Skirt_Style-A-Line', $Silhouettes)) {
$Skirt_Style = 'A-Line';
}
if (in_array('Skirt_Style-Full', $Silhouettes)) {
$Skirt_Style = 'Full';
}
if (in_array('Pant_Style-Straight', $Silhouettes)) {
$Pant_Style = 'Straight';
}
}
var_dump($Skirt_Style);
你还需要将Skirt_Style变成一个数组,否则如果被触发它就会被下一个覆盖。