Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Qualche dubbio sugli array

    Ciao,
    stò studiando PHP in questi giorni (in particolar modo la versione OO di PHP).

    Vengo da 2 esami di Java fatti recentemente e conosco il C (che però non tocco da parecchio).

    Ho qualche dubbio sugli array in PHP:

    1) Sono obbligato a dichiarare la dimensione dell'array quando lo stò dichiarando oppure posso dichiarare un array che poi vado a riempire di volta in volta con quanti elementi voglio.
    Per intenderci...posso fare una cosa del genere:

    codice:
    private $heap[];
    Non stò dichiarando la dimensione...se poi ci devo mettere dentro 10 elementi ce ne metto 10, se invevce ce ne devo mettere 1000 ce ne metto 1000, si può fare?

    2) Per scorrere (con un ciclo) un array in PHP devo sapere a priori la sua dimensione dell'array come in C (oddio spero di non star dicendo una cavolata ma sono assai arruginito) oppure posso fare qualcosa come con gli array in java dove ho l'attributo length che mi dice quanti elementi ci sono in quell'array?
    Qualcosa del genere per intenderci:

    codice:
    for(int i=2; i<unVettore.length; i++)
      a = unVettore[i];
    Grazie
    Andrea

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ciao,

    l'approccio è un pò diverso in php

    per inizializzare un array
    Codice PHP:
    $array=array(); 
    senza dichiarare nulla del tuo array, neanche la multidimensione.. lo inizializzi e basta.

    per popolarlo quindi, puoi procedere all' infinito

    Codice PHP:
    $array=array();
    for (
    $x=0$x <= 1000$x++){
      
    $array[]=$x//con questa sintassi accodi all'array un nuovo elemento, dove php genererà la chiave numerica in automatico
      

    ed infine è possibile scorrere l'array utilizzando foreach
    Codice PHP:
    $array=array();
    for (
    $x=10$x <= 100$x++){
      
    $array[]=$x//con questa sintassi accodi all'array un nuovo elemento, dove php genererà la chiave numerica in automatico
      
    }

    foreach(
    $array as $chiave=>$valore){
      echo 
    "la chiave è $chiave e il valore è $valore
    "
    ;
      } 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Ciao

    Gli array si possono inizializzare solamente senza specificarne la dimensione. E' una restrizione che non esiste in PHP.

    Il codice che inizializza un array vuoto è:
    Codice PHP:
    $nomeVar = array(); 
    Il modo più veloce e pulito per scorrere un array è dato dall'uso del ciclo foreach.
    Il sistema che conosci è comunque fattibile, ma meno efficiente; dovresti utilizzare la funzione count() che restituisce il numero di elementi nell'array.

    Di seguito ti faccio un confronto tra i due sistemi

    Ciclo for combinato con count()
    Codice PHP:
    for($i 0$i <= count($unVettore); $i++)
      
    $a $unVettore[$i]; 
    Ciclo foreach
    Codice PHP:
    foreach ($unVettore as $value)
      
    $a $value
    Foreach in pratica scorre l'array e inserisce il valore corrente dentro una variabile, che quindi ad ogni ciclo viene sovrascritta con l'attuale elemento.

    Nel caso avessi bisogno di recuperare anche l'attuale chiave, la dichiarazione del ciclo andrebbe modificata come segue
    Codice PHP:
    foreach ($unVettore as $key => $value
    Noterai che la dichiarazione "=>" è tipica dell'assegnazione di valori dentro alla funzione array().
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  4. #4
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Dottwatson ha fatto prima di me
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    si ma sei stato piu preciso te
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  6. #6
    Originariamente inviato da Sky
    Ciao

    Gli array si possono inizializzare solamente senza specificarne la dimensione. E' una restrizione che non esiste in PHP.

    Il codice che inizializza un array vuoto è:
    Codice PHP:
    $nomeVar = array(); 
    Il modo più veloce e pulito per scorrere un array è dato dall'uso del ciclo foreach.
    Il sistema che conosci è comunque fattibile, ma meno efficiente; dovresti utilizzare la funzione count() che restituisce il numero di elementi nell'array.

    Di seguito ti faccio un confronto tra i due sistemi

    Ciclo for combinato con count()
    Codice PHP:
    for($i 0$i <= count($unVettore); $i++)
      
    $a $unVettore[$i]; 
    Ciclo foreach
    Codice PHP:
    foreach ($unVettore as $value)
      
    $a $value
    Foreach in pratica scorre l'array e inserisce il valore corrente dentro una variabile, che quindi ad ogni ciclo viene sovrascritta con l'attuale elemento.

    Nel caso avessi bisogno di recuperare anche l'attuale chiave, la dichiarazione del ciclo andrebbe modificata come segue
    Codice PHP:
    foreach ($unVettore as $key => $value
    Noterai che la dichiarazione "=>" è tipica dell'assegnazione di valori dentro alla funzione array().
    Ok chiarissimo...ora proverò ad utilizzare questa cosa per implementare la mia classe.

    Praticamente si tratta di una classe che implementa la struttura dati HEAP e l'algoritmo di ordinamente Heap Sort
    Al corso di algoritmi ci è stato consigliato di implementarli per vedere effettivamente come funzionano...e visto che mi stò studiando PHP per cavoli miei...beh unisco l'utile al dilettevole (e mi sento meno in colpa per studiare qualcosa per cavoli miei sottraendo il tempo agli esami universitari...così ne sotraggo relativamente poco ed imparo qualcosa di nuovo affinando le capacità di programmazione OO prese con i 2 corsi di Java hehe)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.