Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[PHP] aumentare un indice

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[PHP] aumentare un indice

Messaggioda mortal_kombat » gio giu 12, 2008 4:55 pm

Ciao a tutti, scusate per il titolo un po' criptico...
La domanda è banale...
Io ho alcune variabili che possono valere da 0 a 10, definite a mano da me, vorrei costruire un indice che aumenti di 1 ogni volta che queste variabili valgono 10.
Avevo intenzione di usare if() ovviamente ma per ora a me è venuto in mente uno schema un po' "tedioso", tipo:

Codice: Seleziona tutto
$indice = 0;
$funzione_1 = qui metto il suo valore;
if ($funzione_1 == 10) {
    $indice = $indice + 1;
}
else {
    $indice = $indice;
}



Ma la cosa la vedo poco elegante... Anche perché devo definire, come dicevo, più variabili (circa 15) e con questo metodo che mi è venuto in mente dovrei copiare questo blocco dopo aver definito ciascuna variabile.
Esiste qualche altro modo per fare questa cosa?

Grazie [;)]
Avatar utente
mortal_kombat
Senior Member
Senior Member
 
Messaggi: 458
Iscritto il: dom giu 24, 2007 5:36 pm
Località: Pisa

Messaggioda mortal_kombat » gio giu 12, 2008 5:46 pm

Oppure... mi è venuta un'altra idea...
Qualcosa con switch potrebbe andar bene?

EDIT:
oppure, ultima proposta: se creo una array con i valori delle variabili e poi uso la funzione array_count_values()?
Ovviamente, tengo presenti solo le occorrenze del valore [10].

Che dite?
Questa ultima proposta mi sembra la migliore (o magari invece me la distruggete in un secondo... [bleh] )
Avatar utente
mortal_kombat
Senior Member
Senior Member
 
Messaggi: 458
Iscritto il: dom giu 24, 2007 5:36 pm
Località: Pisa

Messaggioda M@ttia » gio giu 12, 2008 6:12 pm

Prima nota al tuo codice sopra: la parte "else {indice = indice}" è ovviamente inutile e superflua (non fa nulla), quindi ti basta un semplice:

Codice: Seleziona tutto
if ($funzione_1 == 10) {$indice = $indice + 1;}



Se inoltre mi dici che la variabile in questione oscilla fra 0 e 10, puoi anche fare una cosa:

Codice: Seleziona tutto
$indice = $indice + $funzione/10;


poiché, essendo / la divisione intera, 0/10 = ... = 9/10 = 0, 10/10 = 1, incrementa di uno esattamente e solo quando la variabile vale 10.
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Messaggioda mortal_kombat » gio giu 12, 2008 6:21 pm

M@ttia ha scritto:Prima nota al tuo codice sopra: la parte "else {indice = indice}" è ovviamente inutile e superflua (non fa nulla), quindi ti basta un semplice:

Codice: Seleziona tutto
if ($funzione_1 == 10) {$indice = $indice + 1;}



Vabbè l'ho scritto per correttezza lessicale! [rotfl]

M@ttia ha scritto:Se inoltre mi dici che la variabile in questione oscilla fra 0 e 10, puoi anche fare una cosa:

Codice: Seleziona tutto
$indice = $indice + $funzione/10;


poiché, essendo / la divisione intera, 0/10 = ... = 9/10 = 0, 10/10 = 1, incrementa di uno esattamente e solo quando la variabile vale 10.

Ecco, questa mi sembra un'ottima idea!
Benissimo, grazie mille! [applauso+]
Avatar utente
mortal_kombat
Senior Member
Senior Member
 
Messaggi: 458
Iscritto il: dom giu 24, 2007 5:36 pm
Località: Pisa

Messaggioda bluesummer » gio giu 12, 2008 7:55 pm

Di soluzioni ce ne sono a iosa...hai solo da sbizzarrirti con la fantasia [:)]

Codice: Seleziona tutto
<?php
  $index=0;

  function controlla($v) {
    global $index;
    if ($v==10) $index++;
  }
 
  $valori = array(1,2,3,4,10,4,10,6,10,4,10);
  array_filter($valori, "controlla");
  print $index;
?>
Avatar utente
bluesummer
Aficionado
Aficionado
 
Messaggi: 104
Iscritto il: lun mag 19, 2008 12:47 pm

Messaggioda mortal_kombat » ven giu 13, 2008 10:38 am

bluesummer ha scritto:
Codice: Seleziona tutto
<?php
  $index=0;

  function controlla($v) {
    global $index;
    if ($v==10) $index++;
  }
 
  $valori = array(1,2,3,4,10,4,10,6,10,4,10);
  array_filter($valori, "controlla");
  print $index;
?>


Questa funzione non va, restituisce sempre 0 come valore.
Avatar utente
mortal_kombat
Senior Member
Senior Member
 
Messaggi: 458
Iscritto il: dom giu 24, 2007 5:36 pm
Località: Pisa

Messaggioda bluesummer » ven giu 13, 2008 11:12 am

Strano...prima di postarla l'ho ovviamente provata.
Funziona egregiamente sia a casa che in ufficio.
Prova sostituendo la funzione 'controlla' con la seguente:

Codice: Seleziona tutto
function controlla($v) {     
    if ($v==10) $GLOBALS["index"]++;
}
Avatar utente
bluesummer
Aficionado
Aficionado
 
Messaggi: 104
Iscritto il: lun mag 19, 2008 12:47 pm


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising