我想创建一个函数,它将数组$arr_previsioni
、值$previsione
和$pos
指示位置的数字作为输入参数。
该函数应该:
1 - 如果 $previsione 尚不存在,则添加该值。
2 - 如果 input 中给出的值 $previsione 已经存在于数组中,它必须修改 $previsione 的值,使其与所有其他值没有区别,最后将其添加到数组中。
基本上给定一个输入 x 数字,我必须创建一个具有此优先级的唯一数字数组:如果我在输入中给出的 x 数字已经存在于数组中,那么我们需要更改 x 数字(添加或减去某些内容)来使它独一无二。
function aggiungiPrevisione($previsione,$pos,$arr_previsioni){
echo '<br>';
// if it is the first element of the array
if($pos == 1){
$arr_previsioni['PREVISIONE1'] = $previsione;
return $arr_previsioni;
}
$numero_elementi = count($arr_previsioni);
foreach($arr_previsioni as $key=>$value){
for($i=0; $i <= $numero_elementi+2; $i++){
// Verifica se esiste
if (in_array($previsione, $arr_previsioni)){
// The same number was found in array
if($previsione > 45){
$previsione = $previsione - 13;
} else {
$previsione = $previsione + 13;
}
$previsione = getNumeroGiocabile($previsione); // returns a number from 0 to 90
} // end checking
} // end for
} // end foreach
// Add $previsione in array
$arr_previsioni['PREVISIONE'.$pos] = $previsione; // by Vincent Decaux
return $arr_previsioni;
}
$previsione = makePrevisione(); // return number from 1 to 90
$arr_previsioni = array(); // initially empty
for($pos=1; $pos<=24; $pos++){
$arr_previsioni = aggiungiPrevisione($previsione,$pos,$arr_previsioni);
}
var_dump($arr_previsioni);
我创建的函数返回一个包含 24 个元素的数组,但有些元素与其他元素相同。下面是数组的值:
array(24) {
["PREVISIONE1"]=>
int(30)
["PREVISIONE2"]=>
int(71)
["PREVISIONE3"]=>
int(22)
["PREVISIONE4"]=>
int(1)
["PREVISIONE5"]=>
int(67)
["PREVISIONE6"]=>
int(51)
["PREVISIONE7"]=>
int(35)
["PREVISIONE8"]=>
int(14)
["PREVISIONE9"]=>
int(72)
["PREVISIONE10"]=>
int(57)
["PREVISIONE11"]=>
int(11)
["PREVISIONE12"]=>
int(76)
["PREVISIONE13"]=>
int(41)
["PREVISIONE14"]=>
int(40)
["PREVISIONE15"]=>
int(39)
["PREVISIONE16"]=>
int(37)
["PREVISIONE17"]=>
int(34)
["PREVISIONE18"]=>
int(29)
["PREVISIONE19"]=>
int(42)
["PREVISIONE20"]=>
int(55)
["PREVISIONE21"]=>
int(55)
["PREVISIONE22"]=>
int(55)
["PREVISIONE23"]=>
int(55)
["PREVISIONE24"]=>
int(55)
}
如您所见,存在重复值(55)。我希望函数插入$previsione
所提供的数字,以防它在数组中不存在,否则它必须修改的值$previsione
(为了获得一个尚不存在的数字)并将其添加到数组。
让我们看看我是否可以更容易地理解这个问题。
通过提供这些输入参数:
$arr_previsione = (
"PREVISIONE1"=>
30,
"PREVISIONE2"=>
71,
"PREVISIONE3"=>
22,
"PREVISIONE4"=>
1,
"PREVISIONE5"=>
67,
"PREVISIONE6"=>
51,
"PREVISIONE7"=>
35);
$pos = 8;
$previsione = 22;
$arr_previsioni = aggiungiPrevisione($previsione8,8,$arr_previsioni);
我目前可以使用上面显示的函数获得的结果可能是这样的:
$arr_previsione = (
"PREVISIONE1"=>
30,
"PREVISIONE2"=>
71,
"PREVISIONE3"=>
22,
"PREVISIONE4"=>
1,
"PREVISIONE5"=>
67,
"PREVISIONE6"=>
51,
"PREVISIONE7"=>
35,
"PREVISIONE8"=>
22); // error
我宁愿得到的是:
$arr_previsione = (
"PREVISIONE1"=>
30,
"PREVISIONE2"=>
71,
"PREVISIONE3"=>
22,
"PREVISIONE4"=>
1,
"PREVISIONE5"=>
67,
"PREVISIONE6"=>
51,
"PREVISIONE7"=>
35,
"PREVISIONE8"=>
48); // after the change the new value entered should be 48 or any other number, it is enough that it is not already present in the array itself
我希望我解释了自己
看来你正在寻找这样的东西:
function aggiungiPrevisione($previsione,$pos,$arr_previsioni)
{
echo '<br>';
// if it is the first element of the array
if ($pos == 1) {
$arr_previsioni['PREVISIONE1'] = $previsione;
return $arr_previsioni;
}
// Make sure $previsione does not yet exist
while (in_array($previsione, $arr_previsioni)) {
$previsione = rand(0, 90);
}
// Add $previsione in array
$arr_previsioni['PREVISIONE'.$pos] = $previsione;
return $arr_previsioni;
}
请注意,我只更改了此功能的中间部分。我有一个简单的while
循环检查值$previsione
是否在数组中$arr_previsioni
。如果它是一个新的 0 到 90 之间的随机值,则为 生成一个新的随机值$previsione
,并再次检查循环条件,直到该值不再存在于数组中。
请注意,一旦使用了 0 到 90 之间的所有值,此例程就会失败。
我也无法纠正所有其他问题,例如:
echo '<br>';
用于操作数组的函数。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句