PDA

Visualizza la versione completa : verificare esistenza valori in array


cablos
23-10-2012, 18:15
salve

ho la necessità di controllare se uno dei valori presenti in un array X è presente anche nell' array Y.
ps. i valori del primo array sono estratti randomicamente, e nel caso in cui nel secondo array esista il valore. è necessario eseguire di nuovo il controllo finchè non venga estratto un valore che non esista già nell'array Y.


ho provato a far delle prove ma niente...mi sono fermato al primo step
qui il codice




$valori = array(1,10); //array X
$scelto = array_rand($pp,1); //valore da confrontare prelevato randomicamente dall'array X
$esclusi = array(1,2,5,3); //array Y

if (in_array($esclusi,$scelto)) {
echo "il valore esiste";
} else
{
echo "il valore non è presente";
}
?>



grazie ciaoo

mattealex
23-10-2012, 20:06
2 cose:
1)array_rand da come risultato 1 numero int se il secondo parametro è inesistente o uguale a 1;
2)array_rand restituisce la posizione del numero che ha trovato;
per saperne di più garda sul manualemanuale (http://php.net/manual/en/function.array-rand.php)

cablos
23-10-2012, 21:01
non ne vengo a capo :dhò:

accetto anche altre soluzioni diverse dalla mia :ciauz:

mattealex
23-10-2012, 21:10
Ecco qua

<?php
$valori = array(1,10); //array X
$esclusi = array(1,2,5,3); //array Y

//scelgo a caso un elemento nell'array X
$scelto = $valori[rand(0,(count($valori)-1))];


//scorro l'array e controllo se il numero $scelto è presente
$esiste=false;
for($i=0;$i<count($esclusi);$i++){
if($esclusi[$i]==$scelto){
$esiste=true;
break;
}
}

if($esiste){
echo "allora esiste";
}
else
{
echo "allora no";
}
?>

cablos
23-10-2012, 21:27
grazie mattealex :)

perchè visualizzo rand solo i valori 1 e 10?
ps. ho refreshato un bel po di volte ma il valore non cambia :(

mattealex
23-10-2012, 21:32
perchè rand (credo tu intenda $scelto) è un numero presente nell'array X, con rand come da nota
//scelgo a caso un elemento nell'array X

cablos
23-10-2012, 22:06
Grazie...


<?php
$scelto = rand(1,10);
$esclusi = array(1,2,3,4);
$esiste= false;
for($i=0;$i<count($esclusi);$i++){
if($esclusi[$i]==$scelto){
$esiste= true;
break;
}
}

if($esiste){
echo "non va bene ".$scelto;
} else {
echo "ok ". $scelto;
}
?>

adesso comincia a ragionare :D

il fatto è che vorrei che mi mostri solo un valore sicuramente non escluso "a prima botta"... :dhò: :dhò:

mattealex
23-10-2012, 22:25
se ho capito quello che vuoi fare:

<?php
$valori = array(1,10); //array X
$esclusi = array(1,2,5,3); //array Y


//scelgo a caso dal nuovo array
$scelto = rand(1, 10);




//scorro l'array e controllo se il numero $scelto è presente
$esiste=false;
for($i=0;$i<count($valori);$i++){
if($valori[$i]==$scelto){
$esiste=true;
for($k=0;$k<count($esclusi);$k++){
if($esclusi[$i]==$scelto){
$esiste=false;
break;
}
}
break;
}
}

if($esiste){
echo "allora ".$scelto." esiste";
}
else
{
echo "allora ".$scelto." non esiste o &egrave; escluso";
}
?>

cablos
23-10-2012, 22:35
grazie mille per l'aiuto che mi stai dando

rendo piu chiaro ciò che intendo fare...

Ti spiego, devo creare un sistema di gestione PASS. (i pass sono 30)
devo fare in modo che il sistema all'avvio del programma visualizzi in automatico nel campo "n. pass" il numero di un pass qualsiasi (da 1 a 30) che non sia stato sicuramente usato precedentemente, in quanto man mano quelli usati vengono di volta in volta registrati ed esclusi.

ps. nel prossimo step cercherò di farfunzionare tutto con l'ausilio di un db :spy:

mattealex
23-10-2012, 23:11
ecco a te:

<?php
$valori = array(3,10); //array X
$esclusi = array(1,2,5,3); //array Y


//scelgo a caso dal nuovo array

$minimoRand=1;
$MassimoRand=30;
$scelto = rand($minimoRand, $MassimoRand);


//scorro l'array e controllo se il numero $scelto è presente
$esiste=false;

$verificamax=1;
$verificamin=1;


if($scelto==min($valori))
for($k=0;$k<count($esclusi);$k++){
if($esclusi[$k]==min($valori)){
$scelto++;
}


}
for($i=0;$i<count($valori);$i++){
if($valori[$i]==$scelto){
$esiste=true;
for($k=0;$k<count($esclusi);$k++){
if($esclusi[$k]==$scelto){
$esiste=false;
break;
}
}

break;
}


if(($i+1)>=count($valori) && $scelto<max($valori) && $verificamax){
$scelto++;
$i=0;
if($scelto>=max($valori))
$verificamax=0;
}
else
if(($i+1)>=count($valori) && $scelto>min($valori) && $verificamin){
$scelto--;
$i=0;
if($scelto<=min($valori))
$verificamin=0;
}
}

if($esiste){
echo "allora ".$scelto." esiste";
}
else
{
echo "Nessuna Ricorrenza";
}

?>

Loading