【问题标题】:How do you avoid the same data in foreach, on sequential data?在顺序数据上,如何避免 foreach 中的相同数据?
【发布时间】:2018-12-02 17:37:22
【问题描述】:

这是现在的数据

字符串(3)“3.1”

字符串(3)“3.2”

字符串(3)“3.3”

字符串(3)“3.4”

字符串(3)“3.1”

字符串(3)“3.2”

这就是我想要的数据

字符串(3)“3.1”

字符串(3)“3.2”

字符串(3)“3.3”

字符串(3)“3.4”

在此处停止循环

字符串(3)“3.1”

字符串(3)“3.2”

以及我制作的以下代码

<?php 
$tempData = null; 
foreach ( $nilai as $key ) : 
  if( $tempData !== $key->no_kd ) :
      echo "<pre>"; var_dump($key->no_kd); echo "</pre>";
      $tempData = $key->no_kd; 
   endif; 
endforeach; 
?>

【问题讨论】:

  • 这不是 laravel 或 codeigniter 相关的问题。

标签: php loops logic


【解决方案1】:

你可以试试这个

<?php
$tempData = array();
foreach ($nilai as $key){
    if(!(in_array($tempData,$key->no_kd))){
        echo "<pre>"; var_dump($key->no_kd); echo "</pre>";
        $tempData[] = $key->no_kd;
    }
}
?>

【讨论】:

  • 1) 您的&lt;?php&gt; 结束标签错误。 2) 在循环中,您为$tempData 分配了$key-&gt;no_kd 的字符串值,这意味着in_array 将不起作用。 3)这个答案实际上解决了哪个问题?
  • 哎呀!!抱歉打错了结束标签,很着急,在上面写的代码中,$tempData 变成了一个数组,所以你可以使用方法 array_push($tempData,$key->no_kd) 将字符串推送到数组中,所以每当有新的键值进入时,它都会使用 in_array() 方法检查数组是否已经存在。希望你现在明白了吗?也原谅我的标签错误..微笑
  • 这更有意义,但是...$tempData = $key-&gt;no_kd; - 在第一个循环之后,$tempData 不再是一个数组。
  • $tempData 仍然是一个数组,您只是将值附加到它上面。但我认为这是正确的语法 $tempData[] = $key->no_kd;不过你可以试试。
  • $tempData[] = ... 在这种情况下是正确的方法,是的。
猜你喜欢
  • 2021-04-22
  • 2017-10-11
  • 2014-03-11
  • 2022-06-14
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
相关资源
最近更新 更多