2016-05-31 11 views
10

posso definire un array in PHP come questo:Che tipo di array utilizza PHP?

$array = array(); 

In C++, abbiamo due tipi di array.

  1. Il primo tipo è un array di dimensione fissa, ad esempio:

    int arr[4]; // 4 ints, hardcoded size 
    
  2. Il secondo tipo è un array di dimensioni dinamico

    std::vector<int> v; // can grow and shrink at runtime 
    

Che tipo di matrice fa Uso PHP? Sono entrambi i tipi di array in PHP? Se sì, puoi darmi esempi?

+6

PHP utilizza array numerici, associativi e array multidimentali. Gli array sono di natura dinamica, nessuna dimensione dovrebbe essere menzionata. Vai al link per trovare in dettaglio. È un argomento vasto da spiegare qui http://php.net/manual/en/language.types.array.php –

+2

Se sei abituato a C/C++, un "array" PHP standard è in realtà una "hashmap" , anche se più simile al tuo array di dimensioni dinamiche .... anche se PHP fornisce anche [SPLFixedArray] (http://nl3.php.net/manual/en/class.splfixedarray.php) anche se le tue normali funzioni dell'array_ * hanno vinto ' t lavorare con quello –

risposta

15

PHP non è rigido come C o C++. In PHP non è necessario specificare il tipo di dati da inserire in un array, non è necessario specificare la dimensione dell'array.

Se è necessario dichiarare un array di interi in C++ si può fare in questo modo:

int array[6];

Questo array è ora destinata a contenere solo numeri interi.In PHP un array può contenere quasi tutto:

$arr = array(); 
$arr[] = 1; 
$arr[] = 2; 
$arr[] = 3; 
$arr[] = 4; 
var_dump($arr); //Prints [1,2,3,4] 
$arr[] = 'hello world'; //Adding a string. Completely valid code 
$arr[] = 3.14; //Adding a float. This one is valid too 
$arr[] = array(
      'id' => 128, 
      'firstName' => 'John' 
      'lastName' => 'Doe' 
); //Adding an associative array, also valid code 
var_dump($arr); //prints [1,2,3,4,'hello world',3.14, [ id => 128, firstName => 'John', lastName => 'Doe']] 

Se stai venendo da un background C++ è meglio per visualizzare l'array PHP come vettore generico che può memorizzare tutto.

+0

quindi possiamo dire tutti i tipi di array in dimensione dinamica PHP (come vettore la dimensione si espande in runtime) ??? @ dimlucas – sam

+0

@sam Sì è vero. Un altro modo per visualizzare un array PHP è come un elenco di "puntatori" (io uso la parola "puntatore" solo per spiegazione, non c'è un tipo di puntatore in PHP) per la memoria che può contenere qualsiasi cosa, anche un'istanza di un classe. È possibile aggiungere o rimuovere elementi da qualsiasi punto dell'array senza romperlo. Un'altra cosa che penso che troverai interessante è che puoi omettere la '$ arr = $ array();' e il mio codice di esempio funzionerà ancora. È proprio il modo in cui funziona PHP – dimlucas

+1

OK grazie ... chiaro ora @dimlucas – sam

1

Fondamentalmente ci sono tre modelli di utilizzo di matrice in PHP.

array indicizzato: Array con indice numerico sequenziale, ad esempio 0, 1, 2, ecc Esempio:

$myarray = array(); 
$myarray[0] = "test data 1"; 
$myarray[1] = "test data 2"; 
$myarray[3] = "test data 3"; 

Array associativo: Questo è il tipo più frequente di array PHP cui elementi sono definiti coppia chiave/valore. Esempio:

$myarray = array(); 
$myarray["key1"] = "value 1"; 
$myarray["key2"] = "value 2"; 
$myarray["key3"] = "value 3"; 

Matrice multidimensionale: matrici i cui elementi possono contenere uno o più matrici. Non c'è limite nel livello di dimensioni. Esempio:

$myarray = array(); 
$myarray[0] = array("data01","data02","data03"); 
$myarray[1] = array("data11","data12","data13"); 

Per maggiori dettagli - Fare riferimento a PHP 5 Arrays.

+3

** tre tipi ** non è corretto. PHP ha solo un tipo di array e può contenere quasi tutto e può essere trattato in modi diversi. – VSG24

+0

@ vsg24 sono d'accordo con te –

+0

@ VSG24 Tecnicamente parlando sei corretto. Ho letto questa risposta come una semplice introduzione ai tre tipi di strutture che vedrai in php. –

12

Da php.net

Un array in PHP è in realtà una mappa ordinata. Una mappa è un tipo che associa valori a chiavi. Questo tipo è ottimizzato per diversi usi ; può essere trattato come una matrice, lista (vettore), hash tabella (un'implementazione di una mappa), dizionario, raccolta, pila, coda e probabilmente di più. Poiché i valori dell'array possono essere altri array, sono possibili anche gli alberi e gli array multidimensionali.

0

PHP utilizza matrici numeriche, associative e array multidimensionali. Gli array sono di natura dinamica e non è necessario menzionare le dimensioni. Passare attraverso php.net/manual/en/language.types.array.php per trovare i dettagli.

+1

No, c'è solo un tipo di array in PHP, che si comporta in modo diverso a seconda di come viene utilizzato. –

+4

La tua risposta, temo, sembra che tu stia dicendo che ci sono 3 tipi diversi. Sono un madrelingua inglese e l'ho letto in questo modo, quindi potresti voler riconsiderare il tuo commento. –

+0

No non lo è, avrei dovuto dirlo chiaramente. –

2

PHP utilizza tre tipi di matrice:

matrice numerica - Un array con un indice numerico. I valori sono memorizzati e accessibili in modo lineare.

Array associativo - Un array con stringhe come indice. Questo memorizza i valori degli elementi in associazione con i valori chiave anziché in un rigoroso ordine dell'indice lineare.

Matrice multidimensionale - Si accede a una matrice contenente uno o più matrici e valori utilizzando più indici.

Array numerico Es:

$numbers = array(1, 2, 3, 4, 5); 

Associative Array Es:

$salaries = array("mohammad" => 2000, "qadir" => 1000, "zara" => 500); 

multidimensionali Array Es:

$marks = array( 
      "mohammad" => array (
       "physics" => 35, 
       "maths" => 30, 
       "chemistry" => 39 
      ), 

      "qadir" => array (
       "physics" => 30, 
       "maths" => 32, 
       "chemistry" => 29 
      ), 

      "zara" => array (
       "physics" => 31, 
       "maths" => 22, 
       "chemistry" => 39 
      ) 
     ); 
2

un array PHP, in C termini ++, è approssimativamente:

std::map< std::experimental::any, std::experimental::any > 

dove std::experimental::any è un tipo che può contenere praticamente qualsiasi cosa. L'equivalente php può anche essere ordinato con l'equivalente di <.

Beh non proprio - più vicino alla verità è che un array PHP è un'interfaccia astratta che espone gran parte delle operazioni che quanto sopra map fornirebbe in C++ (C++ map è un'implementazione concreta).

Array con tasti numerici contigui memorizzati nella variante sono trattati molto simile a un std::vector<Variant>, e sotto l'interfaccia del sistema php potrebbe anche usare vector<Variant> o qualcosa di simile per memorizzarlo, o anche avere due diversi dettagli interni, uno dei quali è per blocchi contigui di dati con indice intero e l'altro per voci sparse. (Non so come sia implementato PHP, ma è così che lo farei)

Problemi correlati