Ciao a tutti ragazzi,
Devo fare un programma che dati dei titoli dei libri,all' interno ci siano 2 o 3 numeri,
tra loro almeno una lettera e, il nuovo numero (successivo) deve essere il multiplo di quello che lo precede.
Funziona tutto ha solo due problemi (quindi non funziona al 100%)
Problemi:
1) Non funziona correttamente il preg_match ovvero funziona solo se metto almeno una lettera tra due numeri. esempio:
Funziona -> ooo 1 oo 4 oo 8 oo
NON funziona -> oo 1 4 oo 8 oo (vedete appena lascio uno spazio tra i due numeri già non funziona più) A me serve che ci deve essere sempre una lettera tra OGNI numero !
2) l'altro problema che ho è che visto che devo calcolare i multipli non so come togliere lo 0 dal terzo elemento, prima mi dava l'errore Uninitialized string offset sono riuscito a risolvere mettendo un empty davanti, ma comunque non riesco a dirgli che quando $INT[3] è uguale a 0 non deve mostrarmelo...
ecco il codice:
Come avete visto ho voluto fare l'echo all'esterno della funzione, perchè credo che sia più giusto.
Un altra cosa, da poco ho iniziato a cimentarmi sul php ma quali altri modi avevo per fare questo esercizio? Cioè mi pare che si possa fare solo con le regex o no?
Comunque vi ringrazio tantissimo se mi date una mano a risolvere quei due errori / imperfezioni.
Devo fare un programma che dati dei titoli dei libri,all' interno ci siano 2 o 3 numeri,
tra loro almeno una lettera e, il nuovo numero (successivo) deve essere il multiplo di quello che lo precede.
Funziona tutto ha solo due problemi (quindi non funziona al 100%)
Problemi:
1) Non funziona correttamente il preg_match ovvero funziona solo se metto almeno una lettera tra due numeri. esempio:
Funziona -> ooo 1 oo 4 oo 8 oo
NON funziona -> oo 1 4 oo 8 oo (vedete appena lascio uno spazio tra i due numeri già non funziona più) A me serve che ci deve essere sempre una lettera tra OGNI numero !
2) l'altro problema che ho è che visto che devo calcolare i multipli non so come togliere lo 0 dal terzo elemento, prima mi dava l'errore Uninitialized string offset sono riuscito a risolvere mettendo un empty davanti, ma comunque non riesco a dirgli che quando $INT[3] è uguale a 0 non deve mostrarmelo...
ecco il codice:
PHP:
function filtrolibri6($fascicolo1){
foreach ($fascicolo1 as $chiave1 => $valore1){
if(preg_match('/[0-9].*[A-Za-z]{1}.*[0-9]/', $valore1) == true){
$int = filter_var($valore1, FILTER_SANITIZE_NUMBER_INT);
if($int[0] <> 0 and $int[1] <> 0 ){
if($int[0] < $int[1] and empty($int[2])){
if($int[1] % $int[0] == 0 ){
$ok2[]= $chiave1 .'=>'. $valore1;
}
}
if($int[0] < $int[1] and !empty($int[2])){
if($int[2] % $int[1] == 0 ){
$ok2[]= $chiave1.' '. ' => '. $valore1;
}
}
}
}
}
return $ok2;
}
$test2 = filtrolibri6($fascicolo1);
foreach($test2 as $chiave2 => $prova2){
echo $prova2 . "<br>";
}
Come avete visto ho voluto fare l'echo all'esterno della funzione, perchè credo che sia più giusto.
Un altra cosa, da poco ho iniziato a cimentarmi sul php ma quali altri modi avevo per fare questo esercizio? Cioè mi pare che si possa fare solo con le regex o no?
Comunque vi ringrazio tantissimo se mi date una mano a risolvere quei due errori / imperfezioni.