我的功能可以返回一个数组,如果充满'up''和'down'之类的值,则数组。我要打印两个连续值不相同的值。示例:如果第一个值已升起,并且第二个值也向上升起,则它应仅打印第一个值,同样是为down。如果连续的不同,它应该继续打印。因此,预计输出将向上,向下,向上,向下?
$a_ret = [];
foreach ($o_response as $o_status) {
$a_ret[] = [
'value' => $o_status->values,
'timestamp' => $o_status->created_at
];
}
return $a_ret;
}
此代码将将您放入返回数组中的每个最后一个值放在$last
变量中。因此down, up, up up, down, up, up, down
将成为down, up, down, up, down
。
$a_ret = [];
$last = null;
foreach ($o_response as $o_status) {
if($last != $o_status->values) {
$a_ret[] = [
'value' => $o_status->values,
'timestamp' => $o_status->created_at
];
$last = $o_status->values;
} else {
// Add this else if you want up, up, up to become up, up.
// See kapil.dev comment on this answer
$last = null;
}
}
return $a_ret;
您可以简单地这样做:
$a = ['up', 'up', 'down', 'up', 'down', 'down'];
$arr = [];
foreach($a as $el) {
if(!empty($arr)) {
if(end($arr) != $el)
$arr[] = $el;
} else {
$arr[] = $el;
}
}
print_r($arr);
// Output: ['up', 'down', 'up', 'down']
希望这会有所帮助!
您可以尝试此
$a = ['up', 'up', 'down', 'up', 'down', 'down'];`
foreach($a as $value) {
if($value != next($a)){
echo $value;
}
}