if statement == true 从数组中删除前一个元素

Posted

技术标签:

【中文标题】if statement == true 从数组中删除前一个元素【英文标题】:Remove previous element from array if statement == true 【发布时间】:2013-05-16 12:59:42 【问题描述】:

我有一个遍历数组的 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>';
    
  

我怎样才能做到这一点?

【问题讨论】:

一个不是简单地删除循环。 (您是否尝试过使用 break; 来逃避循环)? $site-&gt;Services 包含什么?您可以发布其内容的转储吗? 我会看看休息时间。那么这是错误的做法吗?***.com/questions/2304570/… 我不建议在迭代过程中编辑带有未设置 od 的数组...它会产生令人困惑的代码和奇怪的行为。 对不起,乔治不是$survey_array-&gt;Services,而不是$site-&gt;Services。我知道没有帮助,但我会纠正这个问题。 stdClass Object ( [SurveyArray] =&gt; Array ( [0] =&gt; stdClass Object ( [ServiceName] =&gt; SurveyEast ) [1] =&gt; stdClass Object ( [ServiceName] =&gt; SurveyEastUpper ) ) ) 【参考方案1】:

不要使用 foreach,使用 for 和索引。在每次迭代中,向前看一个项目并检查该项目。如果是“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 循环中

【讨论】:

以上是关于if statement == true 从数组中删除前一个元素的主要内容,如果未能解决你的问题,请参考以下文章

Verilog语言的条件语句

while之后if出现unreachable statement

Python—三目运算

Python if语句循环语句

Learn Python 006: if Statements

IF & Statement 从 excel 到 VBA