php中带排除间隔的rand表中的最小值和最大值
嗨,我尝试用排除interwal返回最大值。 我将2000年和2015年的兰特数字输入表格。 接下来我返回最小值和最大值,但我想排除2005年和2010年之间的间隔。 例如 当我拿到2000、2004、2006兰特时,我希望马克斯是2004年。 我的实际尝试不起作用:php中带排除间隔的rand表中的最小值和最大值,php,random,Php,Random,嗨,我尝试用排除interwal返回最大值。 我将2000年和2015年的兰特数字输入表格。 接下来我返回最小值和最大值,但我想排除2005年和2010年之间的间隔。 例如 当我拿到2000、2004、2006兰特时,我希望马克斯是2004年。 我的实际尝试不起作用: $tab = array(); for ($i = 0; $i < 10; $i++) { $tmp = rand(2000,2015); $tab[$i] = $tmp; } $d = array_cou
$tab = array();
for ($i = 0; $i < 10; $i++) {
$tmp = rand(2000,2015);
$tab[$i] = $tmp;
}
$d = array_count_values($tab);
arsort($d);
$max = max(
array_keys(
array_filter(
$d,
function($y) {
return $y < 2005 || $y > 2010;
},
ARRAY_FILTER_USE_KEY
)
)
);
$tab=array();
对于($i=0;$i<10;$i++){
$tmp=兰特(20002015);
$tab[$i]=$tmp;
}
$d=数组\计数\值($tab);
阿尔索特(d美元);
$max=max(
数组\u键(
阵列滤波器(
美元,
功能($y){
返回$y<2005 | |$y>2010;
},
数组\过滤器\使用\键
)
)
);
那么,你真的能拨打一个比2005年小,比2010年大的号码吗
{ return $y < 2005 || $y > 2010; }
这将始终评估为false:
return $y < 2005 && $y > 2010;
返回$y<2005&$y>2010;
你想要:
return $y < 2005 || $y > 2010;
返回$y<2005 | |$y>2010;
或
返回!($y>=2005&&$y您也可以这样做
<?php
$tab = array();
for($i=0; $i<10;$i++)
{
$tmp = rand(2000,2015);
$tab[$i]=$tmp;
}
$intersect = array();
foreach (range(2005, 2010) as $number) {
$intersect[] = $number;
}
$result = array_diff($tab, $intersect);
echo max($result);
echo "<br>";
echo min($result);
echo "<br>";
?>
请试试这个
for ($i = 0; $i < 10; $i++) {
$tmp = rand(2000,2015);
if($tmp > 2010 || $tmp < 2005){
$tab[$i] = $tmp;
}
}
if( count($tab) > 0){
echo "max value - ".max($tab).'</br>';
echo "min value - ".min($tab).'</br>';
}
($i=0;$i<10;$i++)的{
$tmp=兰特(20002015);
如果($tmp>2010 | |$tmp<2005){
$tab[$i]=$tmp;
}
}
如果(计数($tab)>0){
回显“最大值-”.max($tab)。“”;
回显“最小值-”.min($tab)。“”;
}
我理解返回$y<2005 | |$y>2010的错误;我编辑了代码,但仍然无法确保您的php是5.6?同时打开错误报告
。@vjdj确定吗?我在这里使用您的代码(经过更正),它工作正常。php版本:5.5.28和错误报告(0);max return nothing.这在PHP5.5中是如何实现的?另外,你能更具体地解释一下“不工作”的意思吗?2000年到2015年之间的随机数。我有一个错误:注意:使用未定义的常量数组_FILTER_Use_KEY-假设在中使用“数组_FILTER_Use_KEY”,警告:数组_FILTER()最多需要2个参数,在中给出3个,警告:数组_KEY()预期参数1为数组,在中为空,警告:max():当仅给出一个参数时,它必须是函数中的数组,并且不包含任何内容。请重新选中您的php版本。从数组\过滤器文档:“5.6.0添加了可选标志参数和常量数组\过滤器\使用\键和数组\过滤器\两者都使用”Php版本:5.5.28。如何在PHP5.5中实现这一点?我更新了我的Php版本和代码。感谢您的帮助。我相信您可以直接在数组中使用范围(2005,2010)
,而无需从范围中构建$intersect
。
<?php
$tab = array();
for($i=0; $i<10;$i++)
{
$tmp = rand(2000,2015);
$tab[$i]=$tmp;
}
$intersect = array();
foreach (range(2005, 2010) as $number) {
$intersect[] = $number;
}
$result = array_diff($tab, $intersect);
echo max($result);
echo "<br>";
echo min($result);
echo "<br>";
?>
for ($i = 0; $i < 10; $i++) {
$tmp = rand(2000,2015);
if($tmp > 2010 || $tmp < 2005){
$tab[$i] = $tmp;
}
}
if( count($tab) > 0){
echo "max value - ".max($tab).'</br>';
echo "min value - ".min($tab).'</br>';
}