你好,我是这个论坛上的新人。
我想知道是否有人可以帮助我。 我目前正在进行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(荷兰)。答案 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);