PHP-检查当前数组编号是否为>;=然后是最后一个


PHP - Check if current array number is >= then the last one

你好,我是这个论坛的新手。

我在想是否有人能帮我。我目前正在进行一项IT研究,其中一个问题是PHP编程。我目前对以下问题有意见。

问题:创建一个检查数组中值(数字(的函数。如果当前值大于或等于之前的值,则应返回true。如果不是,则echo false。

真实示例:$array=数组(1,2,2,3,4(这应该说是真的4次,因为它变得更大&数字保持不变。

错误示例:$array=array(1,2,1,4(这应该是false,因为数字正在下降。

我制作了以下代码,它将始终返回"true"。

$input = array (1,4,2,7);
function trueorfalse (array $input){
    foreach ($input as $key => $value){
        $value >= $key[0];
        print "true";
    }
 }
trueorfalse($input);

我不知道如何将foreach循环的当前值与之前的值进行比较。有什么想法吗?

附言:PHP对我来说是新事物,我真的很难想出如何解决问题的想法。

真的,

Joey BenningIT学生Windesheim Zwolle(荷兰(。

这将是我的直接方法:

<?php
function isHigherOrEquals (array $input) {
    $result = true;
    $previous = PHP_INT_MIN;
    foreach ($input as $value) {
        if (!($value >= $previous)) {
            return false;
        }
        $previous = $value;
    }
    return $result;
}
var_dump(isHigherOrEquals([1,4,2,7]));
var_dump(isHigherOrEquals([1,4,6,7]));
var_dump(isHigherOrEquals([1,1,1]));
var_dump(isHigherOrEquals([]));

输出显然是:

bool(false)
bool(true)
bool(true)
bool(true)

不是最有效或最容易理解的方法,但yay用于阵列缩减:

$result = array_reduce($input, function (array $carry, $num) {
    return [$carry[0] && $num >= $carry[1], $num];
}, [true, PHP_INT_MIN])[0];
echo $result ? 'true' : 'false';

备选方案:

$result = is_int(array_reduce($input, function ($previous, $current) {
    return is_int($previous) && $current >= $previous;
}, PHP_INT_MIN));
echo $result ? 'true' : 'false';

您可以设置临时变量

<?php
$array = array(1, 2, 2, 3, 4);
$temp = $array[0];
$val = true;
foreach ($array as $key) {
    if ($key < $temp) {
        $val = false;
        break;
    } else {
        $temp = $key;
    }
}
var_dump($val);

您可以将true和false替换为字符串"true"answers"false",然后回显它而不是var_dump

$array = array (1,2,1,4);
$lastChecked = 0;//we need to store the last checked value
foreach($array as $key => $value)
{
    //compare the current array value with the last stored one
    if($value >= $valastCheckedue)
    {
        echo "True<br>";
    }else{
             echo "False<br>";
         }
    //store the current checked value from the array
    $lastChecked = $value;
}

将输出:

正确
正确
错误

开始吧。

我用了for循环。当比较阵列中的多个元素时,这是一个biot。如果你是新手/缺乏编码经验,我建议你使用PHP。PHP是我最早学习的语言之一,它并不太难。一旦你熟悉了编码,我就会转向面向对象的语言,比如C、C++、Java。PHP很好,但它是一种脚本语言,有这两种编程语言的经验是很好的。

希望这能有所帮助。

<?php
function CheckArray($arrayToCheck) {
    for ($i = 1; $i < count($arrayToCheck); $i++) {
        echo(($arrayToCheck[$i]>=$arrayToCheck[$i-1]? $arrayToCheck[$i].">=".$arrayToCheck[$i-1].": True<br />" : $arrayToCheck[$i].">=".$arrayToCheck[$i-1].": False<br />"));
    }
}
$array = array(1, 2, 3, 4, 5, 4, 3, 2, 1);
CheckArray($array);
?>

此函数检查数组中从第二个值开始的所有值。

for($i = 1; $i < sizeof($input); $i++) 
{
    //We check if the value is greater or equal than the one before
    if($input[$i] >= $input [$i-1])
        //If it is true, we'll display it
        echo "True";
    //Else, we display false
    else
        echo "False";
}

您刚刚忘记if:

$input = array (1,4,2,7);
function trueorfalse (array $input)
{
   foreach ($input as $key => $value){
       if ($value >= $key[0])
           print "true";
   }
 }
trueorfalse($input);

编辑:我及时切换到循环:

function trueorfalse (array $input)
{
    for($i = 0; $i < sizeof($input)-1;$i++)
    {
        echo "$input[$i] >= {$input[$i+1]} => ";
        echo ($input[$i] >= $input[$i+1]) ? "true <br>" : "false <br>";
    }
}