【发布时间】:2018-05-16 15:19:42
【问题描述】:
对不起,如果这是重复的,我不知道要搜索什么才能找到答案。
我有一个 foreach 循环,在那个循环中,我试图测试 if (A == B)。然后一旦发现我就打破了循环。如果 (A != B) 在迭代中,我测试 if (X == Y)。
我的问题是,如果首先发现 (X == Y) 为真,则循环在 if (A == B) 可以测试之前中断。
有没有更好的方法来完成这项任务?
$variable[1] = ['A' => 'n', 'X' => 'n'];
$variable[2] = ['A' => 'n', 'X' => 'Y'];
$variable[3] = ['A' => 'B', 'X' => 'n'];
$test = 'B';
foreach ($variable as $value) {
if($value['A'] == $test || $value['X'] == "Y") {
echo 'The results: ' . $value['A'];
break;
}
}
// The results for $variable[2] are returned. I need the results for $variable[3] to be returned.
我确实有一个运行良好的 else 语句,但我不得不复制输出。
提前致谢!
上面的代码是我正在处理的简化版本。这是我正在实际处理的代码。
foreach ($product_xml->products->product_styles as $style => $attribute) {
if(isset($_GET['color']) && $attribute['color'] == $color_selected || $attribute['is_default'] == "1") {
foreach ($attribute as $value){
$imgURL = (string)$value['imgurl'];
$thumburl = (string)$value['thumburl'];
$thumburl_array[(string)$value['side']] = (string)$value['thumburl'];
if (in_array($imgURL, $values)){continue;}
else{
array_push($values, $imgURL);
$imgURL = str_replace("REPLACE_DOMAIN_WITH",IDEQ_INKSOFTAPI_URL_SECURE,$imgURL );
$thumburl = str_replace("REPLACE_DOMAIN_WITH",IDEQ_INKSOFTAPI_URL_SECURE,$thumburl );
$thumburl = str_replace("150.png","500.png",$thumburl );
echo '<img src="'.$imgURL.'" class="pic'.$counter.'" title="'.$value['name'].'">';
$counter++;
}
}
break;
}
}
【问题讨论】:
-
使用 for 循环,在最后一个循环中将
$i重置为 0,切换标志,然后进行 Y 检查 -
感谢您的建议,詹姆斯。我已根据您的回复提交了答案。该解决方案 100% 有效。我想做的唯一改进是不必循环两次来执行多个测试。
标签: php arrays if-statement search foreach