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

时间:2016-10-11 11:15:51

标签: php arrays function

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

我想知道是否有人可以帮助我。 我目前正在进行IT研究,我遇到的一个主题是PHP编程。我目前对以下问题有疑问。

问题:创建一个检查数组中值(数字)的函数。如果当前值大于或等于之前的值,则应该回显为真。如果没有,请回显假。

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

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

我已经制作了以下代码,它将始终返回“true”。

$input = array (1,4,2,7);

function trueorfalse (array $input){

    foreach ($input as $key => $value){
        $value >= $key[0];
        print "true";
    }
 }

trueorfalse($input);

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

PS:PHP对我来说是新的,我真的很难弄清楚如何提出如何解决问题的想法。

你真的,

乔伊本宁 IT学生Windesheim Zwolle(荷兰)。

7 个答案:

答案 0 :(得分:1)

这将是我直截了当的方法:

<?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)

答案 1 :(得分:1)

不是最有效或最易理解的方式,但 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';

答案 2 :(得分:0)

您可以设置临时变量

<?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&#34; true&#34;和&#34; false&#34;,然后回显而不是var_dump

答案 3 :(得分:0)

$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;

}

将输出:





答案 4 :(得分:0)

你走了。

我使用了for循环。比较数组中的多个元素时,它更容易生物。如果你是新手/没有经验的编码,我建议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);

?>

答案 5 :(得分:0)

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

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";
}

答案 6 :(得分:-1)

你忘记了if:

# Subset the data
d <- mpg[, c(1, 3:5)]
# your ISP == manufacturer
# Than transform the data to long format as stated already in the comments using reshape function melt
library(reshape2)
d_long <- melt(d)
head(d_long)
  manufacturer variable value
1         audi    displ   1.8
2         audi    displ   1.8
3         audi    displ   2.0
4         audi    displ   2.0
5         audi    displ   2.8
6         audi    displ   2.8

# Now plot the data using the variable column in facet_grid for the layout.
# scales = "free_x" is used for vairable dependend x-axis scales. 
ggplot(d_long, aes(x = value, colour = manufacturer)) + 
  geom_density() + 
  facet_grid( ~ variable, scales = "free_x") + 
  theme_bw()
# Instead of using facet_grid you can try 
# facet_wrap( ~ variable, scales = "free_x", ncol = 2) 
# to arrange the plots row- and colwise as your needs are. The scaling of both axis can also changed. 
ggplot(d_long, aes(x = value, colour = manufacturer)) + 
  geom_density() + 
  facet_wrap( ~ variable, scales = "free", ncol = 2) + 
  theme_bw()

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

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

trueorfalse($input);