我有一个循环遍历数组的foreach循环,但是我想检查数组是否包含$ item =='survey-east-upper',如果这是真的,那么隐藏前面的$ item,即'survey-east' 。我查看了in_array
,但无法想出如何删除前一个元素。
我的原始代码:
foreach ($survey_array->Services as $service) {
foreach ($service as $item) {
echo '<li title="' . rtrim($item) . '" class="' . strtolower(preg_replace('/[^a-zA-Z0-9]/', '-', rtrim($item))) . '">' . $item . '</li>';
}
}
新代码:
foreach ($survey_array->Services as $service) {
foreach ($service as $item) {
if (in_array("survey-east-upper", $survey_array->Services)) {
unset($site->Services['survey-east']);
}
echo '<li title="' . rtrim($item) . '" class="' . strtolower(preg_replace('/[^a-zA-Z0-9]/', '-', rtrim($item))) . '">' . $item . '</li>';
}
}
我该如何做到这一点?
答案 0 :(得分:2)
不要使用foreach,用于索引。在每次迭代中,提前查看一个项目并检查该项目。如果是“Survey-east-upper”,则跳过实际迭代并继续进行。
foreach ($survey_array->Services as $service) {
for ($i = 0; $i < count($service) - 1; $i++) {
$item = $service[$i];
if ($service[$i + 1] == "survey-east-upper") {
continue;
}
echo '<li title="' . rtrim($item) . '" class="' . strtolower(preg_replace('/[^a-zA-Z0-9]/', '-', rtrim($item))) . '">' . $item . '</li>';
}
}
修改强>
您必须对数组$service[count($service) - 1]
中的最后一项执行某些操作,因为它不会包含在for循环中