PDA

Visualizza la versione completa : verificare esistenza valori in array


 
cablos
23-10-2012, 19: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, 21: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, 22:01
non ne vengo a capo :dh:

accetto anche altre soluzioni diverse dalla mia :ciauz:

mattealex
23-10-2012, 22: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, 22: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, 22: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, 23: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, 23: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, 23: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
24-10-2012, 00: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