[PHP] Metodo che restituisce un array

tonya_atrox

Nuovo Utente
18 Set 2016
15
0
1
40
Sono completamente negata, :(
ho quasi completato un esercizio , sono riuscita a restiruire un array al metodo con i risultati esatti rischiesti dal problema , pero' nel momento in cui richiamo una funzione con l'array restituito , non ottengo il risultato esatto e che mi porti al completamento dell'ercizio.

Cito parte del testo dell'esercizio :
  1. La classe deve fornire i seguenti metodi:


    costruttore a cinque argomenti (nell'ordine specificato nell'elenco precedente) per inizializzare l'oggetto. (Già Creato)

    • metodo chilometriDaUltimoControllo() che restituisce il numero di chilometri percorsi dall'ultimo tagliando effettuato dall'auto x su cui il metodo viene invocato. (Già Creato)

    • metodo autoDaControllare($v, $c) che prende in ingresso un array di auto $v ed un numero $c e restituisce un array contenente tutte le auto contenute nell'array $v che hanno percorso più di $c chilometri dall'ultimo tagliando effettuato. (Già Creato nella classe ma nell'index.php non mi funziona la function confrontaInt )

Spero di essere stata chiara, per togliere ogni dubbio posto qui sotto il codice che ho scritto.
Vorrei capire dove sbaglio :( Grazie a tutti

index.php
PHP:
<?php
include ("classi.php");
$a1 = new Auto("Fiat", "Punto", "A", 20000, 18000);
$a2 = new Auto("Fiat", "Cinquecento", "B", 4000, 3200);
$a3 = new Auto("Peugeot", "207", "C", 55000, 40000);
$a4 = new Auto("Volkswagen", "Golf", "D", 60000, 38000);
$a5 = new Auto("Renault", "Clio", "E", 80000, 70000);
$a6 = new Auto("Ford", "Focus", "F", 75000, 50000);

echo("-- Test costruttore e metodo chilometriDaUltimoControllo:<br>");

confrontaInt($a1->chilometriDaUltimoControllo(), 2000);
confrontaInt($a2->chilometriDaUltimoControllo(), 800);
confrontaInt($a3->chilometriDaUltimoControllo(), 15000);
confrontaInt($a4->chilometriDaUltimoControllo(), 22000);

echo("-- Test metodo autoDaControllare:<br>");

$a = array($a1,$a2,$a3,$a4,$a5,$a6);

$b = Auto::autoDaControllare($a, 10000);

$ris = "";

foreach ($b as $x){
$ris.=$x->targa.",";
}
confronta($ris, "C,D,F,");

function confrontaInt($a, $b) {
echo($a." (corretta: ".$b.") ".($a==$b?"OK":"ERR"));
echo"<br>"; }

function confronta($a, $b) {
echo($a." (corretta: ".$b.") ".($a==$b?"OK":"ERR"));
echo"<br>"; }
?>

classi.php
PHP:
<?php
class Auto{
    public $Marca;
    public $Modello;
    public $Targa;
    public $KmTotaliPercorsi;
    public $KmPercorsiUltimoTagliano;
    
    
    public function __construct ($marca, $modello,$targa,$kmtotalipecorsi,$kmpercorsiultimotagliando){
            $this->Marca=$marca;
            $this->Modello=$modello;
            $this->Targa=$targa;
            $this->KmTotaliPercorsi=$kmtotalipecorsi;
            $this->KmPercorsiUltimoTagliano=$kmpercorsiultimotagliando;   
            
    }
    
    /*
    metodo chilometriDaUltimoControllo() che restituisce il numero di chilometri percorsi dall'ultimo tagliando effettuato dall'auto x su cui il metodo viene invocato.
    */
    
    public function chilometriDaUltimoControllo(){
        $Km_Ultimo_Tagliando = $this->KmPercorsiUltimoTagliano;
        
        return $Km_Ultimo_Tagliando;
        
    }
    
    
    
    /*
    metodo autoDaControllare($v, $c) che prende in ingresso un array di auto $v ed un numero $c e restituisce un array contenente tutte le auto contenute nell'array $v che hanno percorso più di $c chilometri dall'ultimo tagliando effettuato.
    */
    
    public function autoDaControllare($v, $c){
        
    $t = array();
    
$i=0;
foreach ($v AS $key1 => $val1)
  foreach ($val1 AS $key2 => $val2)
      
    if ($key2 == 'Targa')  {
    $t[$i] = $val2;

    } elseif ($key2=='KmPercorsiUltimoTagliano') {
    if ($val2 > $c) {
        //$k[$i] = $val2;
    
    $i = $i + 1;   
    }
    
    }
    
    
    
    
return    $t;
    }
        
    }
    
    
    


?>
 

tonya_atrox

Nuovo Utente
18 Set 2016
15
0
1
40
Dimenticavo che è il Test metodo autoDaControllare non funziona
ecco il risultato quando avvio nel browser il file index.php

-- Test costruttore e metodo chilometriDaUltimoControllo:
18000 (corretta: 2000) ERR
3200 (corretta: 800) ERR
40000 (corretta: 15000) ERR
38000 (corretta: 22000) ERR
-- Test metodo autoDaControllare:
,,,,, (corretta: C,D,F,) ERR
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
28
Ciao.

Ho ristrutturato il metodo autoDaControllare() e qualcosa qua e là nel tuo index.php (il mio è diventato un file unico). Questo è il risultato, vedi se ti è chiaro.

PHP:
<?php
class Auto {
    public $Marca;
    public $Modello;
    public $Targa;
    public $KmTotaliPercorsi;
    public $KmPercorsiUltimoTagliano;
  
  
    public function __construct ($marca, $modello,$targa,$kmtotalipecorsi,$kmpercorsiultimotagliando) {
            $this->Marca=$marca;
            $this->Modello=$modello;
            $this->Targa=$targa;
            $this->KmTotaliPercorsi=$kmtotalipecorsi;
            $this->KmPercorsiUltimoTagliano=$kmpercorsiultimotagliando; 
    }
  
    /*
    metodo chilometriDaUltimoControllo() che restituisce il numero di chilometri percorsi dall'ultimo tagliando effettuato dall'auto x su cui il metodo viene invocato.
    */
  
    public function chilometriDaUltimoControllo() {
        $Km_Ultimo_Tagliando = $this->KmPercorsiUltimoTagliano;
      
        return $Km_Ultimo_Tagliando;
    }
  
  
  
    /*
    metodo autoDaControllare($v, $c) che prende in ingresso un array di auto $v ed un numero $c e restituisce un array contenente tutte le auto contenute nell'array $v che hanno percorso più di $c chilometri dall'ultimo tagliando effettuato.
    */
  
        public function autoDaControllare($v, $c) {
            $controllare = array();
            $i=0;

            foreach ($v AS $car) {
                if ($car->KmPercorsiUltimoTagliano > $c) {
                    $controllare[$i] = $car;
                    $i++;
                 }
            }

            return $controllare;
       }
}
 


######################################### 
// HO UNITO I DUE FILE PER COMODITÀ
#########################################



?>


<?php
// include ("classi.php");
$a1 = new Auto("Fiat", "Punto", "A", 20000, 18000);
$a2 = new Auto("Fiat", "Cinquecento", "B", 4000, 3200);
$a3 = new Auto("Peugeot", "207", "C", 55000, 40000);
$a4 = new Auto("Volkswagen", "Golf", "D", 60000, 38000);
$a5 = new Auto("Renault", "Clio", "E", 80000, 70000);
$a6 = new Auto("Ford", "Focus", "F", 75000, 50000);

$a = array($a1,$a2,$a3,$a4,$a5,$a6);


echo("<br><strong>TEST COSTRUTTORE E METODO CHILOMETRIDAULTIMOCONTROLLO:</strong><br>");

foreach ($a as $key => $value) {
echo "<br><strong>".($key+1).". Targa: ".$value->Targa."</strong><br>Km percorsi dall'ultimo controllo: ".$value->chilometriDaUltimoControllo()."<br>";
}



echo("<br><br><br><strong>TEST METODO AUTODACONTROLLARE</strong><br><br>");

$max_consentito = 39000;
$b = Auto::autoDaControllare($a, $max_consentito);
echo "<strong>Km massimi consentiti:</strong> ".$max_consentito."<br>";
foreach ($b as $key => $value) {
echo "<br><strong>".($key+1).". Targa: ".$value->Targa."</strong><br>Km percorsi dall'ultimo controllo: ".$value->chilometriDaUltimoControllo()."<br>";
}
echo "<br><br>";
?>
 
  • Like
Reactions: tonya_atrox

tonya_atrox

Nuovo Utente
18 Set 2016
15
0
1
40
Fantastico !!! Con la tua modifica ho finalmente l'array $b ritornato dal metodo autoDaControllare e con dentro i valori che a me servivano.
Senza il tuo aiuto non sarei riuscita a risolvere il problema.
Tutto chiaro sei stato molto gentile, preciso ed esaustivo .
Grazie :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
A php metodo post jquery non da mai errore jQuery 4
M [PHP] Passare variabile di sessione con metodo GET PHP 10
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
S [PHP] form con metodo get e recupero id PHP 4
M [PHP] API con metodo POST PHP 0
C PHP METODO POSTBACK PHP 2
V Collegamento metodo$.ajax con file php jQuery 10
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
C [PHP] Metodo di una classe in sltra classe PHP 1
L [PHP/HTML] Inserire metodo di pagamento PHP 4
G Come far passare un valore attraverso il metodo POST utiliazzando PHP a jQuery PHP 4
R metodo get php PHP 4
A Passaggio array da javascript a PHP tramite metodo POST PHP 4
D invocare metodo oggetto php da form html PHP 0
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 1
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 0
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0

Discussioni simili