Php 获取的值不要太接近上一个值

Php 获取的值不要太接近上一个值,php,arrays,Php,Arrays,我正在尝试创建一个函数,该函数将回显一个介于1和6之间的新值,但它不能在上次运行该函数时的+1或-1范围内。(即,如果上次运行时得到4,则需要一个介于1和6之间的新值,而不是3、4或5。) 作为一个php noob,到目前为止,我有以下几点: $prev_val = 8; function wordsize () { global $prev_val; $size_array = range(1,6); do {

我正在尝试创建一个函数,该函数将回显一个介于1和6之间的新值,但它不能在上次运行该函数时的+1或-1范围内。(即,如果上次运行时得到4,则需要一个介于1和6之间的新值,而不是3、4或5。)

作为一个php noob,到目前为止,我有以下几点:

    $prev_val = 8;
    function wordsize () {
        global $prev_val;
        $size_array = range(1,6);
        do {
            $new_val = $size_array[array_rand($size_array)];
        } while($new_val>$prev_val-1 && $new_val<$prev_val+1);
        echo "$new_val";
        $prev_val = $new_val;
    }
$prev_val=8;
函数字号(){
全球$prev_val;
$size_数组=范围(1,6);
做{
$new_val=$size_数组[array_rand($size_数组)];

}虽然($new\u val>$prev\u val-1&&$new\u val您几乎成功了,但您需要使用>=和=$prev\u val-1&&$new\u val您几乎成功了,您需要使用>=和=$prev\u val-1&$new\u val 这样就完全不需要


这就完全消除了对
的需求,而
则是
$new\u val>=$prev\u val-1和$new\u val。此外,您可能需要使用
=
&
另一个选项是:
$size\u array=array\u diff(范围(1,6),范围($prev\u val-1,$prev\u val+1))
,这就完全消除了对
的需求,而
则是。如果您不想
$new\u val>=$prev\u val-1&&$new\u val,您可能还想使用
=
&
另一个选项是:
$size\u array=array\u diff(范围(1,6),范围($prev\u val-1,$prev\u val+1))
,这就完全消除了对
的需要,而
的需要。我会添加几个括号,以确保不会弄乱优先级和内容。而且它也有助于提高可读性!@AmalMurali虽然确实有助于可读性,但操作顺序很低,不必担心它。对;但它可能会混淆正在向正在阅读您的代码的其他人发送电子邮件:)我会添加几个括号,以确保您不会弄乱优先级和其他内容。这也有助于提高可读性!@AmalMurali虽然它确实有助于可读性,&&的操作顺序非常低,但不必担心。对;但它可能会让其他阅读您的代码的人感到困惑:)
while($new_val>=$prev_val-1 && $new_val<=$prev_val+1);
$size_array = array_diff(range(1,6), range($prev_val - 1, $prev_val + 1));