[PHP] Metodo che restituisce un array

tonya_atrox

Nuovo Utente
18 Set 2016
15
0
1
43
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
43
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
30
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
43
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
S passare un valore da un form a un file .php con metodo post PHP 4
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
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 5
F Scrivere dei dati in word con php PHP 0

Discussioni simili