我有代码
的循环值foreach($season as $seasons){
echo $seasons->Combined_season ;
}
,结果是0000000011111111111111111111111222222222222222222222333333333333333333333333344444444444444444444444555555555
如果有相同的值,如何跳过? 我希望结果是 012345
答案 0 :(得分:3)
您正在寻找"独特的"价值观:
<?php
foreach($season as $seasons){
$result[$seasons->Combined_season] = $seasons->Combined_season;
}
echo implode('', $result);
有点尴尬但内存效率更高的版本就是这样:
<?php
foreach($season as $seasons){
$result[$seasons->Combined_season] = null;
}
echo implode('', array_keys($result));
最有效的变体:
<?php
foreach($season as $seasons){
$result[$seasons->Combined_season] = null;
}
$value = array_keys($result);
所有方法都具有以下优点:不在每次循环迭代中都需要条件,这使得它们对于更大的输入集更有效。
这是一个更新,以回答您的其他问题:
我在评论中不止一次提到变体2和3提供了你想要的东西。您只需要在内部使用这些值,而不是将它们用于输出。
以下是完全从上面开始的第三种方法,唯一的区别是我在评论中做了我之前告诉过你的事情:使用这些值而不是使用它们。据我所知,它提供完全您正在寻找的东西:
Dim lines() As String = File.ReadAllLines(filename)
答案 1 :(得分:2)
<?php
$values = [];
foreach($season as $seasons){
if(! in_array($seasons->Combined_season, $values)) {
$values[] = $seasons->Combined_season;
echo $seasons->Combined_season ;
}
}
答案 2 :(得分:0)
{{1}}
基本上,您将任何新值存储在数组中,并在打印值之前,检查它是否已存在于该数组中。
答案 3 :(得分:0)
使用“数组方法”可能是最好的方法。但是,如果您的结果按照示例中的顺序排序,则可以使用其他方法,当前值。
$curr_val = '';
foreach($season as $seasons){
if ($seasons->Combined_season != $curr_val){
echo $seasons->Combined_season ;
$curr_val = $seasons->Combined_season ;
}
}
答案 4 :(得分:-1)
您可以使用外部变量:
$old_value = '';
foreach($season as $seasons){
$new_value = $seasons->Combined_season;
if($old_value != $new_value)
{
echo $new_value;
$old_value = $new_value;
}
}