我想创建一个函数,该函数将数组$arr_previsioni
,值$previsione
和指示位置的数字$pos
作为输入参数。
该功能应:
1-如果值$ previsione不存在,请添加。
2-如果输入中提供的$ previsione值已经存在于数组中,则它必须修改$ previsione的值,使其与所有其他值都没有不同,最后将其添加到数组中。
< br />
本质上给定一个输入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
我希望自己能自己解释
答案 0 :(得分:1)
似乎您正在寻找这样的东西:
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
中。如果它是$previsione
的0到90之间的新随机值,则再次检查循环条件,直到数组中不再存在该值为止。
请注意,一旦使用了0到90之间的所有值,此例程就会失败。
我也无法纠正所有其他问题,例如:
echo '<br>';
。