Crea sito

Content



array_column

(PHP 5 >= 5.5.0)

array_columnReturn the values from a single column in the input array

Descrizione

array array_column ( array $array , mixed $column_key [, mixed $index_key = null ] )

array_column() returns the values from a single column of the array, identified by the column_key. Optionally, you may provide an index_key to index the values in the returned array by the values from the index_key column in the input array.

Elenco dei parametri

array

A multi-dimensional array (record set) from which to pull a column of values.

column_key

The column of values to return. This value may be the integer key of the column you wish to retrieve, or it may be the string key name for an associative array. It may also be NULL to return complete arrays (useful together with index_key to reindex the array).

index_key

The column to use as the index/keys for the returned array. This value may be the integer key of the column, or it may be the string key name.

Valori restituiti

Returns an array of values representing a single column from the input array.

Esempi

Example #1 Get column of first names from recordset

<?php
// Array representing a possible record set returned from a database
$records = array(
    array(
        
'id' => 2135,
        
'first_name' => 'John',
        
'last_name' => 'Doe',
    ),
    array(
        
'id' => 3245,
        
'first_name' => 'Sally',
        
'last_name' => 'Smith',
    ),
    array(
        
'id' => 5342,
        
'first_name' => 'Jane',
        
'last_name' => 'Jones',
    ),
    array(
        
'id' => 5623,
        
'first_name' => 'Peter',
        
'last_name' => 'Doe',
    )
);
 
$first_names array_column($records'first_name');
print_r($first_names);
?>

Il precedente esempio visualizzerà:

Array
(
    [0] => John
    [1] => Sally
    [2] => Jane
    [3] => Peter
)

Example #2 Get column of last names from recordset, indexed by the "id" column

<?php
// Using the $records array from Example #1
$last_names array_column($records'last_name''id');
print_r($last_names);
?>

Il precedente esempio visualizzerà:

Array
(
    [2135] => Doe
    [3245] => Smith
    [5342] => Jones
    [5623] => Doe
)



array_combine

(PHP 5)

array_combineCrea un'array utilizzando un'array per le chiavi ed un altro per i suoi valori

Descrizione

array array_combine ( array $keys , array $values )

Crea un array utilizzando i valori dall'array keys per le chiavi e i valori dall'array values per i valori corrispondenti.

Elenco dei parametri

keys

Un array di chiavi da utilizzare. Valori illegali per le chiavi saranno convertiti in string.

values

Un array di valori da utilizzare

Valori restituiti

Restituisce l'array combinato, FALSE se il numero degli elementi per ogni array non è uguale.

Errori/Eccezioni

Genera un E_WARNING se il numero degli elementi di keys e values non corrisponde.

Log delle modifiche

Versione Descrizione
5.4.0 Le precedenti versioni generavano un E_WARNING e restituivano FALSE per gli array vuoti.

Esempi

Example #1 Un semplice esempio per array_combine()

<?php
$a 
= array('green''red''yellow');
$b = array('avocado''apple''banana');
$c array_combine($a$b);

print_r($c);
?>

Il precedente esempio visualizzerà:

Array
(
    [green]  => avocado
    [red]    => apple
    [yellow] => banana
)

Vedere anche:



array_count_values

(PHP 4, PHP 5)

array_count_valuesConta tutti i valori di un array

Descrizione

array array_count_values ( array $input )

array_count_values() restituisce un array che ha i valori dell'array input per chiavi e la loro frequenza in input come valori.

Example #1 Esempio di array_count_values()

<?php
$array 
= array(1"ciao"1"mondo""ciao");
print_r(array_count_values($array));
?>

Il precedente esempio visualizzerà:

Array
(
    [1] => 2
    [ciao] => 2
    [mondo[ => 1
)

Vedere anche count(), array_unique(), array_values() e count_chars().



array_diff_assoc

(PHP 4 >= 4.3.0, PHP 5)

array_diff_assocCalcola la differenza tra due o più array con un ulteriore controllo sull'indice

Descrizione

array array_diff_assoc ( array $array1 , array $array2 [, array $ ... ] )

array_diff_assoc() restituisce un array contenente tutti i valori di array1 che non sono presenti in alcuno degli altri array. Si noti che le chiavi sono utilizzate nel confronto, diversamente da array_diff().

Example #1 esempio di array_diff_assoc()

<?php
$array1 
= array("a" => "verde""b" => "marrone""c" => "blu""rosso");
$array2 = array("a" => "verde""giallo""rosso");
$result array_diff_assoc($array1$array2);
print_r($result);
?>

Il risultato è:

Array
(
    [b] => marrone
    [c] => blu
    [0] => rosso
)

Nell'esempio si vede che la coppia "a" => "verde" è presente in entrambi gli array e quindi non è nel risultato della funzione. Invece, la coppia 0 => "rosso" è nel risultato perché nel secondo argomento "red" cha come chiave 1.

Due valori delle coppie chiave => valore sono considerati uguali solo se (string) $elem1 === (string) $elem2 . In altre parole c'è un controllo stringente che si accerta che le rappresentazioni sotto forma di stringa siano uguali.

Nota: Si noti che questa funzione controlla solo una dimensione di un array n-dimensionale. Ovviamente è possibile controllare le altre dimensioni usando array_diff_assoc($array1[0], $array2[0]);.

Vedere anche array_diff(), array_intersect(), and array_intersect_assoc().



array_diff_key

(PHP 5 >= 5.1.0)

array_diff_keyComputes the difference of arrays using keys for comparison

Descrizione

array array_diff_key ( array $array1 , array $array2 [, array $... ] )

Compares the keys from array1 against the keys from array2 and returns the difference. This function is like array_diff() except the comparison is done on the keys instead of the values.

Elenco dei parametri

array1

The array to compare from

array2

An array to compare against

...

More arrays to compare against

Valori restituiti

Returns an array containing all the entries from array1 whose keys are not present in any of the other arrays.

Esempi

Example #1 array_diff_key() example

The two keys from the key => value pairs are considered equal only if (string) $key1 === (string) $key2 . In other words a strict type check is executed so the string representation must be the same.

<?php
$array1 
= array('blue'  => 1'red'  => 2'green'  => 3'purple' => 4);
$array2 = array('green' => 5'blue' => 6'yellow' => 7'cyan'   => 8);

var_dump(array_diff_key($array1$array2));
?>

Il precedente esempio visualizzerà:

array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}

Note

Nota:

This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff_key($array1[0], $array2[0]);.

Vedere anche:

  • array_diff() - Calcola la differenza di due o più array
  • array_udiff() - Computes the difference of arrays by using a callback function for data comparison
  • array_diff_assoc() - Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_diff_uassoc() - Computes the difference of arrays with additional index check which is performed by a user supplied callback function
  • array_udiff_assoc() - Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc() - Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_diff_ukey() - Computes the difference of arrays using a callback function on the keys for comparison
  • array_intersect() - Calcola l'intersezione degli arrays
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_intersect_uassoc() - Computes the intersection of arrays with additional index check, compares indexes by a callback function
  • array_intersect_key() - Computes the intersection of arrays using keys for comparison
  • array_intersect_ukey() - Computes the intersection of arrays using a callback function on the keys for comparison



array_diff_uassoc

(PHP 5)

array_diff_uassocComputes the difference of arrays with additional index check which is performed by a user supplied callback function

Descrizione

array array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

Compares array1 against array2 and returns the difference. Unlike array_diff() the array keys are used in the comparison.

Unlike array_diff_assoc() an user supplied callback function is used for the indices comparison, not internal function.

Elenco dei parametri

array1

The array to compare from

array2

An array to compare against

...

More arrays to compare against

key_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )

Valori restituiti

Returns an array containing all the entries from array1 that are not present in any of the other arrays.

Esempi

Example #1 array_diff_uassoc() example

The "a" => "green" pair is present in both arrays and thus it is not in the output from the function. Unlike this, the pair 0 => "red" is in the output because in the second argument "red" has key which is 1.

<?php
function key_compare_func($a$b)
{
    if (
$a === $b) {
        return 
0;
    }
    return (
$a $b)? 1:-1;
}

$array1 = array("a" => "green""b" => "brown""c" => "blue""red");
$array2 = array("a" => "green""yellow""red");
$result array_diff_uassoc($array1$array2"key_compare_func");
print_r($result);
?>

Il precedente esempio visualizzerà:

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

The equality of 2 indices is checked by the user supplied callback function.

Note

Nota:

This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_diff_uassoc($array1[0], $array2[0], "key_compare_func");.

Vedere anche:

  • array_diff() - Calcola la differenza di due o più array
  • array_diff_assoc() - Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_udiff() - Computes the difference of arrays by using a callback function for data comparison
  • array_udiff_assoc() - Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc() - Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_intersect() - Calcola l'intersezione degli arrays
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_uintersect() - Computes the intersection of arrays, compares data by a callback function
  • array_uintersect_assoc() - Computes the intersection of arrays with additional index check, compares data by a callback function
  • array_uintersect_uassoc() - Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions



array_diff_ukey

(PHP 5 >= 5.1.0)

array_diff_ukeyComputes the difference of arrays using a callback function on the keys for comparison

Descrizione

array array_diff_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

Compares the keys from array1 against the keys from array2 and returns the difference. This function is like array_diff() except the comparison is done on the keys instead of the values.

Unlike array_diff_key() a user supplied callback function is used for the indices comparison, not internal function.

Elenco dei parametri

array1

The array to compare from

array2

An array to compare against

...

More arrays to compare against

key_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )

Valori restituiti

Returns an array containing all the entries from array1 that are not present in any of the other arrays.

Esempi

Example #1 array_diff_ukey() example

<?php
function key_compare_func($key1$key2)
{
    if (
$key1 == $key2)
        return 
0;
    else if (
$key1 $key2)
        return 
1;
    else
        return -
1;
}

$array1 = array('blue'  => 1'red'  => 2'green'  => 3'purple' => 4);
$array2 = array('green' => 5'blue' => 6'yellow' => 7'cyan'   => 8);

var_dump(array_diff_ukey($array1$array2'key_compare_func'));
?>

Il precedente esempio visualizzerà:

array(2) {
  ["red"]=>
  int(2)
  ["purple"]=>
  int(4)
}

Note

Nota:

This function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_diff_ukey($array1[0], $array2[0], 'callback_func');.

Vedere anche:

  • array_diff() - Calcola la differenza di due o più array
  • array_udiff() - Computes the difference of arrays by using a callback function for data comparison
  • array_diff_assoc() - Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_diff_uassoc() - Computes the difference of arrays with additional index check which is performed by a user supplied callback function
  • array_udiff_assoc() - Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc() - Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_diff_key() - Computes the difference of arrays using keys for comparison
  • array_intersect() - Calcola l'intersezione degli arrays
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_intersect_uassoc() - Computes the intersection of arrays with additional index check, compares indexes by a callback function
  • array_intersect_key() - Computes the intersection of arrays using keys for comparison
  • array_intersect_ukey() - Computes the intersection of arrays using a callback function on the keys for comparison



array_diff

(PHP 4 >= 4.0.1, PHP 5)

array_diffCalcola la differenza di due o più array

Descrizione

array array_diff ( array $array1 , array $array2 [, array $ ... ] )

array_diff() restituisce un array contenente tutti i valori di array1 che non sono presenti in alcuno degli altri array. Si noti che le associazioni con le chiavi vengono mantenute.

Example #1 Esempio di array_diff()

<?php
$array1 
= array("a" => "verde""rosso""blu""rosso");
$array2 = array("b" => "verde""giallo""rosso");
$risultato array_diff($array1$array2);

print_r($result);
?>

Occorrenze multiple in $array1 sono tutte trattate nello stesso modo. Questo codice mostrerà:

Array
(
    [1] => blu
)

Nota: Due elementi sono considerati uguali se e solo se (string) $elem1 === (string) $elem2. Ovvero: quando la rappresentazione sotto forma di stringa è la stessa.

Nota: Si noti che questa funzione controlla solo una dimensione di un array n-dimensionale. Ovviamente è possibile controllare le altre dimensioni usando array_diff($array1[0], $array2[0]);.

Avviso

Questa funzione era errata nel PHP 4.0.4!

Vedere anche array_diff_assoc(), array_intersect() e array_intersect_assoc().



array_fill_keys

(PHP 5 >= 5.2.0)

array_fill_keysFill an array with values, specifying keys

Descrizione

array array_fill_keys ( array $keys , mixed $value )

Fills an array with the value of the value parameter, using the values of the keys array as keys.

Elenco dei parametri

keys

Array of values that will be used as keys. Illegal values for key will be converted to string.

value

Value to use for filling

Valori restituiti

Returns the filled array

Esempi

Example #1 array_fill_keys() example

<?php
$keys 
= array('foo'510'bar');
$a array_fill_keys($keys'banana');
print_r($a);
?>

Il precedente esempio visualizzerà:

Array
(
    [foo] => banana
    [5] => banana
    [10] => banana
    [bar] => banana
)

Vedere anche:

  • array_fill() - Riempie un array con i valori specificati
  • array_combine() - Crea un'array utilizzando un'array per le chiavi ed un altro per i suoi valori



array_fill

(PHP 4 >= 4.2.0, PHP 5)

array_fillRiempie un array con i valori specificati

Descrizione

array array_fill ( int $inizio , int $num , mixed $valore )

array_fill() riempie un array con num elementi inizializzati con il valore del parametro valore, e con le chiavi che partono dal valore del parametro start_index. Si noti che num deve essere un valore maggiore di zero, altrimenti PHP mostrerà un avvertimento.

Example #1 esempio di array_fill()

<?php
$a 
array_fill(56'banana');
print_r($a);
?>

$a ora è:

Array
(
    [5]  => banana
    [6]  => banana
    [7]  => banana
    [8]  => banana
    [9]  => banana
    [10] => banana
)

Vedere anche str_repeat() e range().



array_filter

(PHP 4 >= 4.0.6, PHP 5)

array_filter Filtra gli elementi di un array usando una funzione callback

Descrizione

array array_filter ( array $input [, callback $callback ] )

array_filter() esegue un'iterazione su ogni valore nell' array input passandolo alla funzione. Se funzione restituisce TRUE, il valore corrente di input viene restituito nell'array risultato. Le chiavi sono mantenute.

Example #1 Esempio di array_filter()

<?php
function dispari($var
{
    return(
$var == 1);
}

function 
pari($var
{
    return(
$var == 0);
}

$array1 = array("a"=>1"b"=>2"c"=>3"d"=>4"e"=>5);
$array2 = array(6789101112);

echo 
"Dispari :\n";
print_r(array_filter($array1"dispari");
echo 
"Pari :\n";
print_r(array_filter($array2"pari");
?>

Il precedente esempio visualizzerà:

Dispari :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Pari:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

Gli utenti non possono modificare l'array attraverso la funzione di callback, ad esempio aggiungere/togliere un elemento, o cancellare l'array su cui array_filter() è applicata. Se l'array viene cambiato, il comportamento di questa funzione non è definito.

Se la funzione callback non viene indicata, array_filter() rimuoverà tutti gli elementi di input che siano uguali a FALSE. Vedere conversione a boolean per ulteriori informazioni.

Example #2 array_filter() senza callback

<?php

$entry 
= array(
             
=> 'pippo',
             
=> false,
             
=> -1,
             
=> null,
             
=> ''
          
);

print_r(array_filter($entry));
?>

Il precedente esempio visualizzerà:

Array
(
    [0] => pippo
    [2] => -1
)

Vedere anche array_map() e array_reduce().



array_flip

(PHP 4, PHP 5)

array_flipScambia tutte le chiavi di un array con i loro valori associati

Descrizione

array array_flip ( array $trans )

array_flip() restituisce un array scambiato, ovvero le chiavi di trans diventano valori e i valori di trans diventano chiavi.

Si noti che i valori di trans devono poter diventare chiavi valide, ovvero devo essere di tipo integer o string. Un errore verrà segnalato se un valore ha il tipo errato, e la coppia chiave/valore in questione non verrà scambiata.

Se un valore ha più di una occorrenza, L'ultima chiave verrà usata come valore, e tutte le altre verranno perse.

array_flip() restituisce FALSE se fallisce.

Example #1 Esempio di array_flip()

<?php
$trans 
array_flip($trans);
$original strtr($str$trans);
?>

Example #2 Esempio di array_flip(): collisione

<?php
$trans 
= array("a" => 1"b" => 1"c" => 2);
$trans array_flip($trans);
print_r($trans);
?>

ora $trans è:

Array
(
    [1] => b
    [2] => c
)

Vedere anche array_values(), array_keys() e array_reverse().



array_intersect_assoc

(PHP 4 >= 4.3.0, PHP 5)

array_intersect_assocCalcola l'intersezione degli array con un ulteriore controllo sugli indici

Descrizione

array array_intersect_assoc ( array $array1 , array $array2 [, array $ ... ] )

array_intersect_assoc() restituisce un array contenente tutti i valori di array1 che siano presenti in tutti gli array passati come argomento. Si noti che le chiavi sono utilizzate nel confronto, diversamente da array_intersect().

Example #1 esempio di array_intersect_assoc()

<?php
$array1 
= array("a" => "verde""b" => "marrone""c" => "blu""rosso");
$array2 = array("a" => "verde""giallo""rosso");
$result_array array_intersect_assoc($array1$array2);
?>

$result_array sarà:

Array
(
    [a] => verde
)

Nell'esempio si vede che solo la coppia "a" => "verde" è presente in entrambi gli array e quindi viene restituita. Il valore "rosso" non viene restituito perché in $array1 la sua chiave è 0 mentre la chiave di "rosso" in $array2 è 1.

I due valori delle coppie chiave => valore sono considerati uguali solo se (string) $elem1 === (string) $elem2 . In altre parole viene eseguito un controllo stringente che si accerta che le rappresentazioni sotto forma di stringa siano uguali.

Vedere anche array_intersect(), array_uintersect_assoc(), array_intersect_uassoc(), array_uintersect_uassoc(), array_diff() e array_diff_assoc().



array_intersect_key

(PHP 5 >= 5.1.0)

array_intersect_keyComputes the intersection of arrays using keys for comparison

Descrizione

array array_intersect_key ( array $array1 , array $array2 [, array $... ] )

array_intersect_key() returns an array containing all the entries of array1 which have keys that are present in all the arguments.

Elenco dei parametri

array1

The array with master keys to check.

array2

An array to compare keys against.

...

A variable list of arrays to compare.

Valori restituiti

Returns an associative array containing all the entries of array1 which have keys that are present in all arguments.

Esempi

Example #1 array_intersect_key() example

<?php
$array1 
= array('blue'  => 1'red'  => 2'green'  => 3'purple' => 4);
$array2 = array('green' => 5'blue' => 6'yellow' => 7'cyan'   => 8);

var_dump(array_intersect_key($array1$array2));
?>

Il precedente esempio visualizzerà:

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

In our example you see that only the keys 'blue' and 'green' are present in both arrays and thus returned. Also notice that the values for the keys 'blue' and 'green' differ between the two arrays. A match still occurs because only the keys are checked. The values returned are those of array1.

The two keys from the key => value pairs are considered equal only if (string) $key1 === (string) $key2 . In other words a strict type check is executed so the string representation must be the same.

Vedere anche:

  • array_diff() - Calcola la differenza di due o più array
  • array_udiff() - Computes the difference of arrays by using a callback function for data comparison
  • array_diff_assoc() - Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_diff_uassoc() - Computes the difference of arrays with additional index check which is performed by a user supplied callback function
  • array_udiff_assoc() - Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc() - Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_diff_key() - Computes the difference of arrays using keys for comparison
  • array_diff_ukey() - Computes the difference of arrays using a callback function on the keys for comparison
  • array_intersect() - Calcola l'intersezione degli arrays
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_intersect_uassoc() - Computes the intersection of arrays with additional index check, compares indexes by a callback function
  • array_intersect_ukey() - Computes the intersection of arrays using a callback function on the keys for comparison



array_intersect_uassoc

(PHP 5)

array_intersect_uassocComputes the intersection of arrays with additional index check, compares indexes by a callback function

Descrizione

array array_intersect_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

array_intersect_uassoc() returns an array containing all the values of array1 that are present in all the arguments. Note that the keys are used in the comparison unlike in array_intersect().

Elenco dei parametri

array1

Initial array for comparison of the arrays.

array2

First array to compare keys against.

...

Variable list of array arguments to compare values against.

key_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )

Valori restituiti

Returns the values of array1 whose values exist in all of the arguments.

Esempi

Example #1 array_intersect_uassoc() example

<?php
$array1 
= array("a" => "green""b" => "brown""c" => "blue""red");
$array2 = array("a" => "GREEN""B" => "brown""yellow""red");

print_r(array_intersect_uassoc($array1$array2"strcasecmp"));
?>

Il precedente esempio visualizzerà:

Array
(
    [b] => brown
)

Vedere anche:



array_intersect_ukey

(PHP 5 >= 5.1.0)

array_intersect_ukeyComputes the intersection of arrays using a callback function on the keys for comparison

Descrizione

array array_intersect_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

array_intersect_ukey() returns an array containing all the values of array1 which have matching keys that are present in all the arguments.

Elenco dei parametri

array1

Initial array for comparison of the arrays.

array2

First array to compare keys against.

...

Variable list of array arguments to compare keys against.

key_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )

Valori restituiti

Returns the values of array1 whose keys exist in all the arguments.

Esempi

Example #1 array_intersect_ukey() example

<?php
function key_compare_func($key1$key2)
{
    if (
$key1 == $key2)
        return 
0;
    else if (
$key1 $key2)
        return 
1;
    else
        return -
1;
}

$array1 = array('blue'  => 1'red'  => 2'green'  => 3'purple' => 4);
$array2 = array('green' => 5'blue' => 6'yellow' => 7'cyan'   => 8);

var_dump(array_intersect_ukey($array1$array2'key_compare_func'));
?>

Il precedente esempio visualizzerà:

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

In our example you see that only the keys 'blue' and 'green' are present in both arrays and thus returned. Also notice that the values for the keys 'blue' and 'green' differ between the two arrays. A match still occurs because only the keys are checked. The values returned are those of array1.

Vedere anche:

  • array_diff() - Calcola la differenza di due o più array
  • array_udiff() - Computes the difference of arrays by using a callback function for data comparison
  • array_diff_assoc() - Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_diff_uassoc() - Computes the difference of arrays with additional index check which is performed by a user supplied callback function
  • array_udiff_assoc() - Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc() - Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_diff_key() - Computes the difference of arrays using keys for comparison
  • array_diff_ukey() - Computes the difference of arrays using a callback function on the keys for comparison
  • array_intersect() - Calcola l'intersezione degli arrays
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_intersect_uassoc() - Computes the intersection of arrays with additional index check, compares indexes by a callback function
  • array_intersect_key() - Computes the intersection of arrays using keys for comparison



array_intersect

(PHP 4 >= 4.0.1, PHP 5)

array_intersectCalcola l'intersezione degli arrays

Descrizione

array array_intersect ( array $array1 , array $array2 [, array $ ... ] )

array_intersect() restituisce un array contenente tutti i valori di array1 che siano presenti in tutti gli array passati come argomento. Si noti che le associazioni con le chiavi sono mantenute.

Example #1 Esempio di array_intersect()

<?php
$array1 
= array("a" => "verde""rosso""blu");
$array2 = array("b" => "verde""giallo""rosso");
$risultato array_intersect($array1$array2);
?>

In questo modo $result sarà:

Array
(
    [a] => verde
    [0] => rosso
)

Nota: Due elementi sono considerati uguali solo e solo se (string) $elem1 === (string) $elem2. Ovvero: quando la rappresentazione sotto forma di stringa è la stessa.

Vedere anche array_intersect_assoc(), array_diff() e array_diff_assoc().



array_key_exists

(PHP 4 >= 4.0.7, PHP 5)

array_key_existsControlla se l'indice (o chiave) specificato esiste nell'array

Descrizione

bool array_key_exists ( mixed $chiave , array $cerca )

array_key_exists() restituisce TRUE se il parametro chiave esiste nell'array. chiave può essere qualsiasi valore accettabile per un indice di array.

Example #1 esempio di array_key_exists()

<?php
$un_array 
= array("primo" => 1"secondo" => 4);
if (
array_key_exists("primo"$un_array)) {
    echo 
"L'elemento 'primo' è nell'array";
    }
    
?>

Nota: Il nome di questa funzione è key_exists() nel PHP 4.0.6.

Vedere anche isset(), array_keys() e in_array().



array_keys

(PHP 4, PHP 5)

array_keysRestituisce tutte le chiavi di un array

Descrizione

array array_keys ( array $input [, mixed $ valore_ricerca ] )

array_keys() rstituisce le chiavi, numeriche e stringa, dell'array input.

Se il parametro opzionale valore_ricerca è specificato, solo le chiavi che corrispondono a quel valore vengono restituite. Altrimenti, vengono restituite tutte le chiavi dell'array input.

Example #1 Esempio di array_keys()

?php
$array = array(0 => 100, "colore" => "rosso");
print_r(array_keys($array))

$array = array("blu", "rosso", "verde", "blu", "blu");
print_r(array_keys($array, "blu"));

$array = array("colore" => array("blu", "rosso", "verde"),
               "misura" =&gt; array("piccola", "media", "grande"));
print_r(array_keys($array));
?>

Il risultato di questo programma sarà:

Array
(
    [0] => 0
    [1] => colore
)
Array
(
    [0] => 0
    [1] => 3
    [2] => 4
)
Array
(
    [0] => colore
    [1] => misura
)

Vedere anche array_values() e array_key_exists().



array_map

(PHP 4 >= 4.0.6, PHP 5)

array_map Applica la funzione callback a tutti gli elementi dell'array dato

Descrizione

array array_map ( callback $funzione , array $arr1 [, array $... ] )

array_map() restituisce un array contenente tutti gli elementi di arr1 dopo che è stata loro applicata la funzione callback. Il numero di parametri che la funzione callback accetta deve corrispondere al numero di array passati alla funzione array_map()

Example #1 Esempio di array_map()

<?php
function cubo($n
{
    return(
$n $n $n);
}

$a = array(12345);
$b array_map("cubo"$a);
print_r($b);
?>

In questo modo $b sarà:

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

Example #2 array_map() - usare più array

<?php
function mostra_Spagnolo($n$m
{
    return(
"Il numero $n si dice $m in Spagnolo");
}

function 
mappa_Spagnolo($n$m
{
    return(array(
$n => $m));
}

$a = array(12345);
$b = array("uno""dos""tres""cuatro""cinco");

$c array_map("mostra_Spagnolo"$a$b);
print_r($c);

$d array_map("mappa_Spagnolo"$a$b);
print_r($d);
?>

Il precedente esempio visualizzerà:

//stampa di $c
Array
(
    [0] => Il numero 1 si dice uno in Spagnolo
    [1] => Il numero 2 si dice dos in Spagnolo
    [2] => Il numero 3 si dice tres in Spagnolo
    [3] => Il numero 4 si dice cuatro in Spagnolo
    [4] => Il numero 5 si dice cinco in Spagnolo
)

// stampa di $d
Array
(
    [0] => Array
        (
            [1] => uno
        )

    [1] => Array
        (
            [2] => dos
        )

    [2] => Array
        (
            [3] => tres
        )

    [3] => Array
        (
            [4] => cuatro
        )

    [4] => Array
        (
            [5] => cinco
        )

)

Generalmente, quando si usano due o più array, questi devono avere eguale lunghezza in quanto la funzione callback viene applicata in parallelo agli elementi corrispondenti. Se gli array sono di lunghezza diversa, il più corto verrà esteso con elementi vuoti.

Un uso interessante di questa funzione è quello di costruire un array di array, cosa che può essere facilmente ottenuta usando NULL come nome della funzione callback

Example #3 Creare un array di array

<?php
$a 
= array(12345);
$b = array("uno""due""tre""quattro""cinque");
$c = array("uno""dos""tres""cuatro""cinco");

$d array_map(null$a$b$c);
print_r($d);
?>

Il precedente esempio visualizzerà:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => uno
            [2] => uno
        )

    [1] => Array
        (
            [0] => 2
            [1] => due
            [2] => dos
        )

    [2] => Array
        (
            [0] => 3
            [1] => tre
            [2] => tres
        )

    [3] => Array
        (
            [0] => 4
            [1] => quattro
            [2] => cuatro
        )

    [4] => Array
        (
            [0] => 5
            [1] => cinque
            [2] => cinco
        )

)

Vedere anche array_filter(), array_reduce(), array_walk() e informazioni sul tipo callback.



array_merge_recursive

(PHP 4 >= 4.0.1, PHP 5)

array_merge_recursiveFonde due o più array in modo ricorsivo

Descrizione

array array_merge_recursive ( array $array1 [, array $... ] )

Array_merge_recursive() fonde gli elementi di uno o più array in modo tale che i valori di un array siano accodati all'array precedente. Restituisce l'array risultante.

Se gli array in input hanno le stesse chiavi stringa, i valori di queste chiavi vengono fusi in un array, e questo è fatto in modo ricorsivo, cioè se uno dei valori è un array, la funzione lo fonderà con una voce corrispondente in un altro array Comunque, se gli array hanno la stessa chiave numerica, l'ultimo valore non sovrascriverà il valore originale, bensì verrà accodato.

Elenco dei parametri

array1

Array iniziale da fondere.

...

Lista variabile di array da fondere ricorsivamente.

Valori restituiti

Un array di valori risultante dalla fusione degli argomenti.

Esempi

Example #1 Esempio di array_merge_recursive()

<?php
$ar1 
= array("colore" => array ("preferito" => "rosso"), 5);
$ar2 = array(10"colore" => array ("preferito" => "verde""blu"));
$risultato array_merge_recursive($ar1$ar2);
print_r($result);
?>

Il precedente esempio visualizzerà:

Array
(
    [colore] => Array
        (
            [preferito] => Array
                (
                    [0] => rosso
                    [1] => verde
                )

            [0] => blu
        )

    [0] => 5
    [1] => 10
)

Vedere anche:



array_merge

(PHP 4, PHP 5)

array_mergeFonde uno o più array

Descrizione

array array_merge ( array $array1 [, array $array2 [, array $... ]] )

array_merge() fonde gli elementi di uno o più array in modo che i valori di un array siano accodati a quelli dell'array precedente. Restituisce l'array risultante.

Se gli array in input hanno le stesse chiavi stringa, l'ultimo valore di quella chiave sovrascriverà i precedenti. Comunque, se gli array hanno le stesse chiavi numeriche, l'ultimo valore non sovrascriverà quello originale, bensì sarà accodato.

Se viene fornito un solo array, e questo è indicizzato numericamente, le chiavi vengono reindicizzate in una sequenza continua. Nel caso di array associativi, delle chiavi duplicate rimane solo l'ultima. Vedere l'esempio tre per ulteriori dettagli.

Example #1 Esempio di array_merge()

<?php
$array1 
= array("colore" => "rosso"24);
$array2 = array("a""b""colore" => "verde""forma" => "trapezio"4);
$risultato array_merge($array1$array2);
print_r($risultato);
?>

La variabile $risultato sarà:

Array
(
    [colore] => verde
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [forma] => trapezio
    [4] => 4
)

Example #2 Esempio di array_merge()

<?php
$array1 
= array();
$array2 = array(=> "dati");
$result array_merge($array1$array2);
?>

Non dimenticarsi che le chiavi numeriche saranno rinumerate!

Array
(
    [0] => data
)

Se si vogliono preservare gli array e li si vuole solo concatenare, usare l'operatore +:

<?php
$array1 
= array();
$array2 = array(=> "dati");
$result $array1 $array2;
?>

La chiave numerica sarà preservata e così pure l'associazione.

Array
(
    [1] => data
)

Example #3 esempio di array_merge()

<?php
$array_uno 
= array(=> "mario"=> "roberto"=> "andrea"=> "dante");
$array_due = array("mario => "roberto", "andrea" => "dante", "mario" => "giacomo");

unset(
$array_uno[2]);

$risultato_uno = array_merge($array_uno);
$risultato_due = array_merge($array_due);

print_r(
$risultato_uno);
print_r(
$risultato_due);
?>

Il risultato sarà:

Array
(
    [0] => mario
    [1] => roberto
    [2] => dante
)
Array
(
    [mario] => giacomo
    [andrea] => dante
)

Nota:

Le chiavi condivise verranno sovrascritte dalla prima chiave processata.

Vedere anche array_merge_recursive() e array_combine() e operatori sugli array.



array_multisort

(PHP 4, PHP 5)

array_multisortOrdina array multipli o multidimensionali

Descrizione

bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $... ]]] )

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Array_multisort() Può essere usata per ordinare parecchi array allo stesso tempo, oppure un array multidimensionale, rispetto a una o più dimensioni.

Mantiene le chiavi associative (tipo string), mentre le chiavi numeriche vengono reindicizzate.

Gli array in input sono trattati come campi di una tabella che vengano ordinati per righe - questo assomiglia alla funzionalità della clausola SQL ORDER BY Il primo array è quello primario, rispetto a cui ordinare. Le righe (valori) in questo array that siano uguali vengono ordinate secondo l'array successivo, e così via.

La struttura degli argomenti di questa funzione è un po' inusuale, ma flessibile. Il primo argomento deve essere un array. In seguito, ogni argomento può essere sia un array che un flag di ordinamento, selezionabile dalla seguente lista.

Flag di ordinamento:

  • SORT_ASC - ordinamento crescente
  • SORT_DESC - ordinamento decrescente

Flag di tipo:

  • SORT_REGULAR - confronta gli elementi in modo normale
  • SORT_NUMERIC - confronta gli elementi numericamente
  • SORT_STRING - confronta gli elementi come stringhe

Dopo ogni array, non si possono specificare due flag dello stesso tipo. I flag specificati dopo un array si applicano solo a quell'array - sono reimpostati ai default SORT_ASC e SORT_REGULAR prima di ogni nuovo array passato come argomento.

Example #1 Ordinamre più array

<?php
$ar1 
= array("10"100100"a");
$ar2 = array(13"2"1);
array_multisort($ar1$ar2);

var_dump($ar1);
var_dump($ar2);
?>

In questo esempio, dopo l'ordinamento, il primo array conterrà "10", "a", 100, 100. Il secondo array conterrà 1, 1, "2", 3. Gli elementi del secondo array corrispondenti a quelli, identici, del primo array (100 e 100), vengono pure ordinati.

array(4) {
  [0]=> string(2) "10"
  [1]=> string(1) "a"
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(1)
  [1]=> int(1)
  [2]=> string(1) "2"
  [3]=> int(3)
}

Example #2 Ordinamento di array multidimensionali

<?php
$ar 
= array(
       array(
"10"11100100"a"),
       array(   
1,  2"2",   3,   1)
      );
array_multisort($ar[0], SORT_ASCSORT_STRING,
                
$ar[1], SORT_NUMERICSORT_DESC);
var_dump($ar);
?>

In questo esempio, dopo l'ordinamento, il primo array conterrà "10", 100, 100, 11, "a" (ordinato come stringhe ordine crescente), e il secondo conterrà 1, 3, "2", 2, 1 (ordinati come numeri, in ordine decrescente).

array(2) {
  [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
  }
  [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
  }
}

Example #3 Ordinamento dei risultati di un database

In questo esempio, ogni elemento nell'array data rappresenta un record della tabella. Questo genere di dato è tipico dei record di database.

Esempio di dati:

volume | edition
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

I dati sono in un array, chiamato data. Di solito questo si ottiene ciclando, ad esempio, con mysql_fetch_assoc().

<?php
$data
[] = array('volume' => 67'edition' => 2);
$data[] = array('volume' => 86'edition' => 1);
$data[] = array('volume' => 85'edition' => 6);
$data[] = array('volume' => 98'edition' => 2);
$data[] = array('volume' => 86'edition' => 6);
$data[] = array('volume' => 67'edition' => 7);
?>

In questo esempio ordineremo volume in senso discendente, edition in senso ascendente.

Abbiamo un array di record, ma array_multisort() richiede un array di colonne, quindi usiamo il codice qui sotto per ottenerlo, quindi eseguiremo l'ordinamento.

<?php
// Ottiene un array di colonne
foreach ($data as $key => $row) {
    
$volume[$key]  = $row['volume'];
    
$edition[$key] = $row['edition'];
}

// Ordina 'volume' in senso discendente, 'edition' in senso ascendente
// Aggiungere $data come ultimo parametr per ordinare sulla chiave comune
array_multisort($volumeSORT_DESC$editionSORT_ASC$data);
?>

Il set di dati è ora ordinato, e apparirà così:

volume | edition
-------+--------
    98 |       2
    86 |       1
    86 |       6
    85 |       6
    67 |       2
    67 |       7

Example #4 Ordinamento senza distinzione tra maiuscole e minuscole

Sia SORT_STRING che SORT_REGULAR tengono conto delle maiuscole, le stringhe che iniziano con una maiuscola vengono prima di quelle che iniziano con una minuscola.

Per ottenere un ordinamento che ignori le maiuscole, forzarlo in modo che sia determnato da una copia dell'array originale formata da sole minuscole.

<?php
$array 
= array('Alpha''atomic''Beta''bank');
$array_lowercase array_map('strtolower'$array);

array_multisort($array_lowercaseSORT_ASCSORT_STRING$array);

print_r($array);
?>

Il precedente esempio visualizzerà:

Array
(
    [0] => Alpha
    [1] => atomic
    [2] => bank
    [3] => Beta
)



array_pad

(PHP 4, PHP 5)

array_pad Riempie con un valore un array fino alla lunghezza specificata

Descrizione

array array_pad ( array $input , int $pad_size , mixed $pad_value )

array_pad() restituisce una copia di input allungato alla dimensione sepcificata da pad_size con il valore pad_value. Se pad_size è positivo l'array è riempito sulla destra, se è negativo sulla sinistra. Se il valore assoluto di pad_size è minore o uguale alla lunghezza di input non viene effettuata alcuna modifica.

Example #1 esempio di array_pad()

<?php
$input 
= array(12109);

$risultato array_pad($input50);
// risultato diventa array(12, 10, 9, 0, 0)

$risultato array_pad($input, -7, -1);
// risultato diventa array(-1, -1, -1, -1, 12, 10, 9)

$risultato array_pad($input2"noop");
// ridimensionamento non efettuato
?>

Vedere anche array_fill() e range().



array_pop

(PHP 4, PHP 5)

array_popEstrae l'elemento alla fine dell'array

Descrizione

mixed array_pop ( array $array )

array_pop() estrae e restituisce l'ultimo valore di array, accorciando array di un elemento. Se array è vuoto (o non è un array), viene restituito NULL.

Nota: Questa funzione farà il reset() del puntatore dell'array dopo l'uso.

Example #1 esempio di array_pop()

<?php
$pila 
= array("arancia""banana""mela""lampone");
$frutto array_pop($pila);
print_r($pila);
?>

Dopo questa istruzione, $pila avrà solo 3 elementi:

Array
(
    [0] => arancia
    [1] => banana
    [2] => mela
)

e lampone verrà assegnato alla variabile $frutto.

Avviso

Questa funzione può restituire il Booleano FALSE, ma può anche restituire un valore non-Booleano valutato come FALSE. Fare riferimento alla sezione Booleans per maggiori informazioni. Usare l'operatore === per controllare il valore restituito da questa funzione.

Vedere anche array_push(), array_shift() e array_unshift().



array_product

(PHP 5 >= 5.1.0)

array_productCalculate the product of values in an array

Descrizione

number array_product ( array $array )

array_product() returns the product of values in an array.

Elenco dei parametri

array

The array.

Valori restituiti

Returns the product as an integer or float.

Log delle modifiche

Versione Descrizione
5.3.6 The product of an empty array is now 1, when before this function would return 0 for an empty array.

Esempi

Example #1 array_product() examples

<?php

$a 
= array(2468);
echo 
"product(a) = " array_product($a) . "\n";
echo 
"product(array()) = " array_product(array()) . "\n";

?>

Il precedente esempio visualizzerà:

product(a) = 384
product(array()) = 1



array_push

(PHP 4, PHP 5)

array_push Accoda uno o più elementi ad un array

Descrizione

int array_push ( array $array , mixed $var [, mixed $... ] )

array_push() tratta array come una pila, e accoda le variabili date alla fine di array. La lunghezza di array aumenta del numero di variabili accodate. Ha lo stesso effetto di:

<?php
$array
[] = $var;
?>
ripetuto per ogni var.

Restituisce il nuovo numero di elementi nell'array.

Example #1 esempio di array_push()

<?php
$pila 
= array("arancia""banana");
array_push($pila"mela""lampone");
print_r($pila);
?>

In questo esempio $pila avrà i seguenti elementi:

Array
(
    [0] => arancia
    [1] => banana
    [2] => mela
    [3] => lampone
)

Nota: Se si utilizza array_push() per aggiungere un elemento all'array, è preferibile piuttosto utilizzare $array[] = poiché in questo modo non c'è il tempo d'attesa per la chiamata di funzione.

Vedere anche array_pop(), array_shift() e array_unshift().



array_rand

(PHP 4, PHP 5)

array_rand Estrae a caso uno o più elementi da un array

Descrizione

mixed array_rand ( array $input [, int $num_req ] )

array_rand() è piuttosto utile quando si vuole estrarre a caso uno o più elementi da un array. Prende un array (input) e un argomento ozpionale (num_req) che specifica quanti elementi estrarre - se non è specificato, è 1 per default.

Se si sta estraendo solo un elemento, array_rand() restituisce la chiave di un elemento. Altrimenti, restituisce un array di chiavi. Questo viene fatto in modo da permettere di estrarre dall'array sia le chiavi che i valori.

Nota: Dal PHP 4.2.0, non c'è più bisogno di inizializzare il generatore di nomeri casuali con srand() o mt_srand() dal momento che questo viene fatto automaricamente.

Example #1 esempio di array_rand()

<?
srand
((float) microtime() * 10000000);
$input = array("Neo""Morpheus""Trinity""Cypher""Tank");
$chiavi array_rand($input2);
echo 
$input[$chiavi[0]] . "\n";
echo 
$input[$chiavi[1]] . "\n";
?>

Vedere anche shuffle().



array_reduce

(PHP 4 >= 4.0.5, PHP 5)

array_reduce Riduce iterativamente l'array a un singolo valore utilizzando una funzione callback

Descrizione

mixed array_reduce ( array $input , callback $funzione [, int $initial ] )

array_reduce() applica iterativamente la funzione callback agli elementi dell'array input, riducendo l'array a un singolo valore. Seil parametro opzionale intial è specificato, viene usato come valore iniziale all'inizio del processo, o come risultato finale nel caso l'array sia vuoto.

Example #1 esempio di array_reduce()

<?php
function rsum($v$w
{
    
$v += $w;
    return 
$v;
}

function 
rmul($v$w
{
    
$v *= $w;
    return 
$v;
}

$a = array(12345);
$x = array();
$b array_reduce($a"rsum");
$c array_reduce($a"rmul"10);
$d array_reduce($x"rsum"1);
?>

In questo modo $b conterrà 15, $c conterrà 1200 (= 1*2*3*4*5*10) e $d conterrà 1.

Vedere anche array_filter() e array_map(), array_unique() e array_count_values().



array_replace_recursive

(PHP 5 >= 5.3.0)

array_replace_recursiveReplaces elements from passed arrays into the first array recursively

Descrizione

array array_replace_recursive ( array $array1 , array $array2 [, array $... ] )

array_replace_recursive() replaces the values of array1 with the same values from all the following arrays. If a key from the first array exists in the second array, its value will be replaced by the value from the second array. If the key exists in the second array, and not the first, it will be created in the first array. If a key only exists in the first array, it will be left as is. If several arrays are passed for replacement, they will be processed in order, the later array overwriting the previous values.

array_replace_recursive() is recursive : it will recurse into arrays and apply the same process to the inner value.

When the value in array1 is scalar, it will be replaced by the value in array2, may it be scalar or array. When the value in array1 and array2 are both arrays, array_replace_recursive() will replace their respective value recursively.

Elenco dei parametri

array1

The array in which elements are replaced.

array2

The array from which elements will be extracted.

...

Optional. More arrays from which elements will be extracted.

Valori restituiti

Returns an array, or NULL if an error occurs.

Esempi

Example #1 array_replace_recursive() example

<?php
$base 
= array('citrus' => array( "orange") , 'berries' => array("blackberry""raspberry"), );
$replacements = array('citrus' => array('pineapple'), 'berries' => array('blueberry'));

$basket array_replace_recursive($base$replacements);
print_r($basket);

$basket array_replace($base$replacements);
print_r($basket);
?>

Il precedente esempio visualizzerà:

Array
(
    [citrus] => Array
        (
            [0] => pineapple
        )

    [berries] => Array
        (
            [0] => blueberry
            [1] => raspberry
        )

)
Array
(
    [citrus] => Array
        (
            [0] => pineapple
        )

    [berries] => Array
        (
            [0] => blueberry
        )

)

Example #2 array_replace_recursive() and recursive behavior

<?php
$base 
= array('citrus' => array("orange") , 'berries' => array("blackberry""raspberry"), 'others' => 'banana' );
$replacements = array('citrus' => 'pineapple''berries' => array('blueberry'), 'others' => array('litchis'));
$replacements2 = array('citrus' => array('pineapple'), 'berries' => array('blueberry'), 'others' => 'litchis');

$basket array_replace_recursive($base$replacements$replacements2);
print_r($basket);

?>

Il precedente esempio visualizzerà:

Array
(
    [citrus] => Array
        (
            [0] => pineapple
        )

    [berries] => Array
        (
            [0] => blueberry
            [1] => raspberry
        )

    [others] => litchis
)

Vedere anche:



array_replace

(PHP 5 >= 5.3.0)

array_replaceReplaces elements from passed arrays into the first array

Descrizione

array array_replace ( array $array1 , array $array2 [, array $... ] )

array_replace() replaces the values of array1 with values having the same keys in each of the following arrays. If a key from the first array exists in the second array, its value will be replaced by the value from the second array. If the key exists in the second array, and not the first, it will be created in the first array. If a key only exists in the first array, it will be left as is. If several arrays are passed for replacement, they will be processed in order, the later arrays overwriting the previous values.

array_replace() is not recursive : it will replace values in the first array by whatever type is in the second array.

Elenco dei parametri

array1

The array in which elements are replaced.

array2

The array from which elements will be extracted.

...

More arrays from which elements will be extracted. Values from later arrays overwrite the previous values.

Valori restituiti

Returns an array, or NULL if an error occurs.

Esempi

Example #1 array_replace() example

<?php
$base 
= array("orange""banana""apple""raspberry");
$replacements = array(=> "pineapple"=> "cherry");
$replacements2 = array(=> "grape");

$basket array_replace($base$replacements$replacements2);
print_r($basket);
?>

Il precedente esempio visualizzerà:

Array
(
    [0] => grape
    [1] => banana
    [2] => apple
    [3] => raspberry
    [4] => cherry
)

Vedere anche:



array_reverse

(PHP 4, PHP 5)

array_reverse Restituisce un array con gli elementi in ordine invertito

Descrizione

array array_reverse ( array $array [, bool $mantieni_chiavi ] )

array_reverse() prende array e restituisce un nuovo array con l'ordine degli elementi invertito, mantenendo le chiavi sie mantieni_chiavi è TRUE.

Example #1 esempio di array_reverse()

<?php
$input  
= array("php"4.0, array("verde""rosso"));
$risultato array_reverse($input);
$resultato_chiavi array_reverse($inputtrue);
?>

Questo fa sì che sia $risultato che $risultato_chiavi abbiano gli stessi elementi, ma si noti la differenza tra le chiavi. La stampa di $risultato e $risultato_chiavi sarà:

Array
(
    [0] => Array
        (
            [0] => verde
            [1] => rosso
        )

    [1] => 4
    [2] => php
)
Array
(
    [2] => Array
        (
            [0] => verde
            [1] => rosso
        )

    [1] => 4
    [0] => php
)

Nota:

Il secondo parametro è stato aggiunto in PHP 4.0.3.

Vedere anche array_flip().




array_shift

(PHP 4, PHP 5)

array_shift Estrae l'elemento alla testa dell'array

Descrizione

mixed array_shift ( array $array )

array_shift() estrae il primo elemento di array e lo restituisce, accorciando array di un elemento e spostando tutti gli altri all'indietro. Tutte le chiavi numeriche verranno modificate al fine di iniziare il conteggio da zero, mentre gli indici alfabetici non verranno modificati. Se array è vuoto (o non è un array), viene restituito NULL.

Nota: Questa funzione farà il reset() del puntatore dell'array dopo l'uso.

Example #1 esempio di array_shift()

<?php
$pila 
= array("arancia""banana""mela"lampone");
$frutto = array_shift($pila);
print_r(
$pila);
?>

In questo modo $pila rimarrà con 3 elementi:

Array
(
    [0] => banana
    [1] => mela
    [2] => lampone
)

e arancia sarà assegnata a $frutto.

Vedere anche array_unshift(), array_push() e array_pop().



array_slice

(PHP 4, PHP 5)

array_sliceEstrae un sottoinsieme da un array

Descrizione

array array_slice ( array $array , int $offset [, int $ length ] )

array_slice() restituisce la sequenza di elementi dell'array array come specificato dai parametri offset e length .

Se offset è positivo, la sequenza comincerà da quell'offset in array. Se offset è negativo, la sequenza comincerà alla distanza offset dalla fine di array.

Se length è specificata ed è positiva, la sequenza conterrà quel numero di elementi. Se length è specificata ed è negativa la sequenza si fermerà a quel numero di elementi dalla fine dell'array. Se viene omessa, la sequenza conterrà tutto da offset fino alla fine di array.

Si noti che array_slice() ignorerà le chiavi dell'array, e calcolerè gli spiazzamenti e le lunghezze basandosi sulle posizioni correnti degli elementi nell'array.

Example #1 esempi di array_slice()

<?php
$input 
= array("a""b""c""d""e");

$output array_slice($input2);      // restituisce "c", "d" e "e"
$output array_slice($input2, -1);  // restituisce "c", "d"
$output array_slice($input, -21);  // restituisce "d"
$output array_slice($input03);   // restituisce "a", "b" e "c"
?>

Vedere anche array_splice() e unset().



array_splice

(PHP 4, PHP 5)

array_splice Rimuove una porzione dell'array e la sostituisce con altro

Descrizione

array array_splice ( array &$input , int $offset [, int $length [, array $ replacement ]] )

array_splice() rimuove gli elementi specificati da offset e length dall'array input, e li sostituisce con gli elementi dell'array replacement, se fornito. Restituisce un array contenente gli elementi estratti.

Se offset è positivo l'inizio della porzione rimossa è a quella distanza dall'inizio dell'array input. Se offset è negativo inizia a quella distanza dalla fine dell'array input.

Se length è omessa, rimuove tutti gli elementi da offset alla fine dell'array. Se length è specificata a positiva, quel numero di elementi vengono rimossi. Se length è specificata e negativa la porzione da rimuovere terminerà a length elementi dalla fine dell'array. Suggerimento: per rimuovere tutti gli elementi tra offset e la fine dell'array quando è specificato pure replacement, usare count($input) nel parametro length.

Se l'array replacement è specificato, gli elementi rimossi sono sostituiti dagli elementi di questo array. Se offset e length sono tali per cui niente viene rimosso, gli elementi dell'array replacement sono inseriti nella posizione specificata da offset. Si noti che le chiavi nell'array replacement non sono conservate. Se replacement è composto solo da un elemento non è necessario porlo nel costrutto array(), a meno che l'elemento stesso non sia un array.

Le seguenti espressione cambiano i valori di $input nello stesso modo:

array_splice() equivalents
array_push($input, $x, $y) array_splice($input, count($input), 0, array($x, $y))
array_pop($input) array_splice($input, -1)
array_shift($input) array_splice($input, 0, 1)
array_unshift($input, $x, $y) array_splice($input, 0, 0, array($x, $y))
$input[$x] = $y // negli array in cui la chiave è uguale alla posizione array_splice($input, $x, 1, $y)

Restituisce un array contenente gli elementi rimossi.

Example #1 esempi di array_splice()

<?php
$input 
= array("rosso""verde""blu""giallo");
array_splice($input2);
// $input è ora array("rosso", "verde")

$input = array("rosso""verde""blu""giallo");
array_splice($input1, -1);
// $input è ora array("rosso", "giallo")

$input = array("rosso""verde""blu""giallo");
array_splice($input1count($input), "arancio");
// $input è ora array("rosso", "arancio")

$input = array("rosso""verde""blu""giallo");
array_splice($input, -11, array("nero""marrone"));
// $input è ora array("rosso", "verde",
//          "blu", "nero", "marrone")

$input = array("rosso""verde""blu""giallo");
array_splice($input30"viola");
// $input è ora array("rosso", "verde",
//          "blu", "viola", "giallo");
?>

Vedere anche array_slice()i, unset() e array_merge().



array_sum

(PHP 4 >= 4.0.4, PHP 5)

array_sum Calcola la somma dei valori di un array

Descrizione

mixed array_sum ( array $array )

array_sum() restituisce la somma dei valori dell'array sotto forma di integer o float.

Example #1 esempi di array_sum()

<?php
$a 
= array(2468);
echo 
"sum(a) = " array_sum($a) . "\n";

$b = array("a" => 1.2"b" => 2.3"c" => 3.4);
echo 
"sum(b) = " array_sum($b) . "\n";
?>

Il precedente esempio visualizzerà:

sum(a) = 20
sum(b) = 6.9

Nota:

Le versioni di PHP antecedenti alla 4.2.1 modificavano l'array stesso e convertivano le stringhe in numeri (le quali erano convertite in zeri la maggior parte delle volte, a seconda dal valore).



array_udiff_assoc

(PHP 5)

array_udiff_assocComputes the difference of arrays with additional index check, compares data by a callback function

Descrizione

array array_udiff_assoc ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

Computes the difference of arrays with additional index check, compares data by a callback function.

Nota: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_udiff_assoc($array1[0], $array2[0], "some_comparison_func");.

Elenco dei parametri

array1

The first array.

array2

The second array.

value_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )

Valori restituiti

array_udiff_assoc() returns an array containing all the values from array1 that are not present in any of the other arguments. Note that the keys are used in the comparison unlike array_diff() and array_udiff(). The comparison of arrays' data is performed by using an user-supplied callback. In this aspect the behaviour is opposite to the behaviour of array_diff_assoc() which uses internal function for comparison.

Esempi

Example #1 array_udiff_assoc() example

<?php
class cr {
    private 
$priv_member;
    function 
cr($val)
    {
        
$this->priv_member $val;
    }

    static function 
comp_func_cr($a$b)
    {
        if (
$a->priv_member === $b->priv_member) return 0;
        return (
$a->priv_member $b->priv_member)? 1:-1;
    }
}

$a = array("0.1" => new cr(9), "0.5" => new cr(12), => new cr(23), 1=> new cr(4), => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), => new cr(3), 1=> new cr(4), => new cr(-15),);

$result array_udiff_assoc($a$b, array("cr""comp_func_cr"));
print_r($result);
?>

Il precedente esempio visualizzerà:

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

In our example above you see the "1" => new cr(4) pair is present in both arrays and thus it is not in the output from the function.

Vedere anche:

  • array_diff() - Calcola la differenza di due o più array
  • array_diff_assoc() - Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_diff_uassoc() - Computes the difference of arrays with additional index check which is performed by a user supplied callback function
  • array_udiff() - Computes the difference of arrays by using a callback function for data comparison
  • array_udiff_uassoc() - Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_intersect() - Calcola l'intersezione degli arrays
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_uintersect() - Computes the intersection of arrays, compares data by a callback function
  • array_uintersect_assoc() - Computes the intersection of arrays with additional index check, compares data by a callback function
  • array_uintersect_uassoc() - Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions



array_udiff_uassoc

(PHP 5)

array_udiff_uassocComputes the difference of arrays with additional index check, compares data and indexes by a callback function

Descrizione

array array_udiff_uassoc ( array $array1 , array $array2 [, array $... ], callable $value_compare_func , callable $key_compare_func )

Computes the difference of arrays with additional index check, compares data and indexes by a callback function.

Note that the keys are used in the comparison unlike array_diff() and array_udiff().

Elenco dei parametri

array1

The first array.

array2

The second array.

value_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )
key_compare_func

The comparison of keys (indices) is done also by the callback function key_compare_func. This behaviour is unlike what array_udiff_assoc() does, since the latter compares the indices by using an internal function.

Valori restituiti

Returns an array containing all the values from array1 that are not present in any of the other arguments.

Esempi

Example #1 array_udiff_uassoc() example

<?php
class cr {
    private 
$priv_member;
    function 
cr($val)
    {
        
$this->priv_member $val;
    }

    static function 
comp_func_cr($a$b)
    {
        if (
$a->priv_member === $b->priv_member) return 0;
        return (
$a->priv_member $b->priv_member)? 1:-1;
    }

    static function 
comp_func_key($a$b)
    {
        if (
$a === $b) return 0;
        return (
$a $b)? 1:-1;
    }
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), => new cr(23), 1=> new cr(4), => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), => new cr(3), 1=> new cr(4), => new cr(-15),);

$result array_udiff_uassoc($a$b, array("cr""comp_func_cr"), array("cr""comp_func_key"));
print_r($result);
?>

Il precedente esempio visualizzerà:

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

In our example above you see the "1" => new cr(4) pair is present in both arrays and thus it is not in the output from the function. Keep in mind that you have to supply 2 callback functions.

Note

Nota: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using, for example, array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");.

Vedere anche:

  • array_diff() - Calcola la differenza di due o più array
  • array_diff_assoc() - Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_udiff() - Computes the difference of arrays by using a callback function for data comparison
  • array_udiff_assoc() - Computes the difference of arrays with additional index check, compares data by a callback function
  • array_intersect() - Calcola l'intersezione degli arrays
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_uintersect() - Computes the intersection of arrays, compares data by a callback function
  • array_uintersect_assoc() - Computes the intersection of arrays with additional index check, compares data by a callback function
  • array_uintersect_uassoc() - Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions



array_udiff

(PHP 5)

array_udiffComputes the difference of arrays by using a callback function for data comparison

Descrizione

array array_udiff ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

Computes the difference of arrays by using a callback function for data comparison. This is unlike array_diff() which uses an internal function for comparing the data.

Elenco dei parametri

array1

The first array.

array2

The second array.

value_compare_func

The callback comparison function.

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )

Valori restituiti

Returns an array containing all the values of array1 that are not present in any of the other arguments.

Esempi

Example #1 array_udiff() example using stdClass Objects

<?php
// Arrays to compare
$array1 = array(new stdclass, new stdclass,
                new 
stdclass, new stdclass,
               );

$array2 = array(
                new 
stdclass, new stdclass,
               );

// Set some properties for each object
$array1[0]->width 11$array1[0]->height 3;
$array1[1]->width 7;  $array1[1]->height 1;
$array1[2]->width 2;  $array1[2]->height 9;
$array1[3]->width 5;  $array1[3]->height 7;

$array2[0]->width 7;  $array2[0]->height 5;
$array2[1]->width 9;  $array2[1]->height 2;

function 
compare_by_area($a$b) {
    
$areaA $a->width $a->height;
    
$areaB $b->width $b->height;
    
    if (
$areaA $areaB) {
        return -
1;
    } elseif (
$areaA $areaB) {
        return 
1;
    } else {
        return 
0;
    }
}

print_r(array_udiff($array1$array2'compare_by_area'));
?>

Il precedente esempio visualizzerà:

Array
(
    [0] => stdClass Object
        (
            [width] => 11
            [height] => 3
        )

    [1] => stdClass Object
        (
            [width] => 7
            [height] => 1
        )

)

Example #2 array_udiff() example using DateTime Objects

<?php
Class MyCalendar {
    public 
$free = array();
    public 
$booked = array();

    public function 
__construct($week 'now') {
        
$start = new DateTime($week);
        
$start->modify('Monday this week midnight');
        
$end = clone $start;
        
$end->modify('Friday this week midnight');
        
$interval = new DateInterval('P1D');
        foreach (new 
DatePeriod($start$interval$end) as $freeTime) {
            
$this->free[] = $freeTime;
        }
    }

    public function 
bookAppointment(DateTime $date$note) {
        
$this->booked[] = array('date' => $date->modify('midnight'), 'note' => $note);
    }

    public function 
checkAvailability() {
        return 
array_udiff($this->free$this->booked, array($this'customCompare'));
    }
    
    public function 
customCompare($free$booked) {
        if (
is_array($free)) $a $free['date'];
        else 
$a $free;
        if (
is_array($booked)) $b $booked['date'];
        else 
$b $booked;
        if (
$a == $b) {
            return 
0;
        } elseif (
$a $b) {
            return 
1;
        } else {
            return -
1;
        }
    }
}

// Create a calendar for weekly appointments
$myCalendar = new MyCalendar;

// Book some appointments for this week
$myCalendar->bookAppointment(new DateTime('Monday this week'), "Cleaning GoogleGuy's apartment.");
$myCalendar->bookAppointment(new DateTime('Wednesday this week'), "Going on a snowboarding trip.");
$myCalendar->bookAppointment(new DateTime('Friday this week'), "Fixing buggy code.");

// Check availability of days by comparing $booked dates against $free dates
echo "I'm available on the following days this week...\n\n";
foreach (
$myCalendar->checkAvailability() as $free) {
    echo 
$free->format('l'), "\n"
}
echo 
"\n\n";
echo 
"I'm busy on the following days this week...\n\n";
foreach (
$myCalendar->booked as $booked) {
    echo 
$booked['date']->format('l'), ": "$booked['note'], "\n"
}
?>

Il precedente esempio visualizzerà:

I'm available on the following days this week...

Tuesday
Thursday


I'm busy on the following days this week...

Monday: Cleaning GoogleGuy's apartment.
Wednesday: Going on a snowboarding trip.
Friday: Fixing buggy code.

Note

Nota: Please note that this function only checks one dimension of a n-dimensional array. Of course you can check deeper dimensions by using array_udiff($array1[0], $array2[0], "data_compare_func");.

Vedere anche:

  • array_diff() - Calcola la differenza di due o più array
  • array_diff_assoc() - Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_diff_uassoc() - Computes the difference of arrays with additional index check which is performed by a user supplied callback function
  • array_udiff_assoc() - Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc() - Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_intersect() - Calcola l'intersezione degli arrays
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_uintersect() - Computes the intersection of arrays, compares data by a callback function
  • array_uintersect_assoc() - Computes the intersection of arrays with additional index check, compares data by a callback function
  • array_uintersect_uassoc() - Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions



array_uintersect_assoc

(PHP 5)

array_uintersect_assocComputes the intersection of arrays with additional index check, compares data by a callback function

Descrizione

array array_uintersect_assoc ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

Computes the intersection of arrays with additional index check, compares data by a callback function.

Note that the keys are used in the comparison unlike in array_uintersect(). The data is compared by using a callback function.

Elenco dei parametri

array1

The first array.

array2

The second array.

value_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )

Valori restituiti

Returns an array containing all the values of array1 that are present in all the arguments.

Esempi

Example #1 array_uintersect_assoc() example

<?php
$array1 
= array("a" => "green""b" => "brown""c" => "blue""red");
$array2 = array("a" => "GREEN""B" => "brown""yellow""red");

print_r(array_uintersect_assoc($array1$array2"strcasecmp"));
?>

Il precedente esempio visualizzerà:

Array
(
    [a] => green
)

Vedere anche:

  • array_uintersect() - Computes the intersection of arrays, compares data by a callback function
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_intersect_uassoc() - Computes the intersection of arrays with additional index check, compares indexes by a callback function
  • array_uintersect_uassoc() - Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions



array_uintersect_uassoc

(PHP 5)

array_uintersect_uassocComputes the intersection of arrays with additional index check, compares data and indexes by a callback functions

Descrizione

array array_uintersect_uassoc ( array $array1 , array $array2 [, array $... ], callable $value_compare_func , callable $key_compare_func )

Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions Note that the keys are used in the comparison unlike in array_uintersect(). Both the data and the indexes are compared by using separate callback functions.

Elenco dei parametri

array1

The first array.

array2

The second array.

value_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )
key_compare_func

Key comparison callback function.

Valori restituiti

Returns an array containing all the values of array1 that are present in all the arguments.

Esempi

Example #1 array_uintersect_uassoc() example

<?php
$array1 
= array("a" => "green""b" => "brown""c" => "blue""red");
$array2 = array("a" => "GREEN""B" => "brown""yellow""red");

print_r(array_uintersect_uassoc($array1$array2"strcasecmp""strcasecmp"));
?>

Il precedente esempio visualizzerà:

Array
(
    [a] => green
    [b] => brown
)

Vedere anche:

  • array_uintersect() - Computes the intersection of arrays, compares data by a callback function
  • array_intersect_assoc() - Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_intersect_uassoc() - Computes the intersection of arrays with additional index check, compares indexes by a callback function
  • array_uintersect_assoc() - Computes the intersection of arrays with additional index check, compares data by a callback function



array_uintersect

(PHP 5)

array_uintersectComputes the intersection of arrays, compares data by a callback function

Descrizione

array array_uintersect ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )

Computes the intersection of arrays, compares data by a callback function.

Elenco dei parametri

array1

The first array.

array2

The second array.

value_compare_func

La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato essere minore, uguale o maggiore del secondo.

int callback ( mixed $a, mixed $b )

Valori restituiti

Returns an array containing all the values of array1 that are present in all the arguments.

Esempi

Example #1 array_uintersect() example

<?php
$array1 
= array("a" => "green""b" => "brown""c" => "blue""red");
$array2 = array("a" => "GREEN""B" => "brown""yellow""red");

print_r(array_uintersect($array1$array2"strcasecmp"));
?>

Il precedente esempio visualizzerà:

Array
(
    [a] => green
    [b] => brown
    [0] => red
)

Vedere anche:



array_unique

(PHP 4 >= 4.0.1, PHP 5)

array_uniqueRimuove i valori duplicati di un array

Descrizione

array array_unique ( array $array )

array_unique() prende array e restituisce un nuovo array senza i valori duplicati.

Si noti che le chiavi sono mantenute. array_unique() ordina i valori trattandoli come stringhe, quindi mantiene la prima chiave trovata per ogni valore, e ignorerà tutte le altre chiavi. Questo non significa che la chiave del primo valore dell'array non ancora ordinato verrà mantenuta.

Nota: Due elementi sono considerati uguali se e solo se (string) $elem1 === (string) $elem2. Ovvero: quando la rappresentazione sotto forma di stringa è la stessa. Verrà usato il primo elemento.

Example #1 esempio di array_unique()

<?php
$input 
= array("a" => "verde""rosso""b" => "verde""blu""rosso");
$risultato array_unique($input);
print_r($result);
?>

Questo mostrerà:

Array
(
    [b] => verde
    [1] => blu
    [2] => rosso
)

Example #2 array_unique() e i tipi

<?php
$input 
= array(4"4""3"43"3");
$risultato array_unique($input);
var_dump($risultato);
?>

Questo script mostrerà:

array(2) {
  [0] => int(4)
  [2] => string(1) "3"
}



array_unshift

(PHP 4, PHP 5)

array_unshift Inserisce uno o più elementi all'inizio dell'array

Descrizione

int array_unshift ( array $array , mixed $var [, mixed $ ... ] )

array_unshift() aggiunge gli elementi specificati in testa ad array. Si noti che la lista di elementi è aggiunta in blocco, in modo tale che gli elementi rimangano nello stesso ordine. Tutte le chiavi numeriche vengono modificate per iniziare da zero mentre le chiavi alfabetiche non sono modificate.

Restituisce il nuovo numero di elementi in array.

Example #1 esempio di array_unshift()

<?php
$lista 
= array("arancia""banana");
array_unshift($lista"mela""lampone");
?>

In questo modo $lista conterrà i seguenti elementi:

Array
(
    [0] => mela
    [1] => lampone
    [2] => arancia
    [3] => banana
)

Vedere anche array_shift(), array_push() e array_pop().



array_values

(PHP 4, PHP 5)

array_valuesRestituisce tutti i valori di un array

Descrizione

array array_values ( array $input )

array_values() restituisce tutti i valori dell'array input e indicizza numericamente l'array.

Example #1 esempio di array_values()

<?php
$array 
= array("taglia" => "XL""colore" => "oro");
print_r(array_values($array));
?>

Il precedente esempio visualizzerà:

Array
(
    [0] => XL
    [1] => oro
)

Vedere anche array_keys().



array_walk_recursive

(PHP 5)

array_walk_recursiveApply a user function recursively to every member of an array

Descrizione

bool array_walk_recursive ( array &$array , callable $callback [, mixed $userdata = NULL ] )

Applies the user-defined callback function to each element of the array. This function will recurse into deeper arrays.

Elenco dei parametri

array

The input array.

callback

Typically, callback takes on two parameters. The array parameter's value being the first, and the key/index second.

Nota:

If callback needs to be working with the actual values of the array, specify the first parameter of callback as a reference. Then, any changes made to those elements will be made in the original array itself.

userdata

If the optional userdata parameter is supplied, it will be passed as the third parameter to the callback.

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

Example #1 array_walk_recursive() example

<?php
$sweet 
= array('a' => 'apple''b' => 'banana');
$fruits = array('sweet' => $sweet'sour' => 'lemon');

function 
test_print($item$key)
{
    echo 
"$key holds $item\n";
}

array_walk_recursive($fruits'test_print');
?>

Il precedente esempio visualizzerà:

a holds apple
b holds banana
sour holds lemon

You may notice that the key 'sweet' is never displayed. Any key that holds an array will not be passed to the function.

Vedere anche:



array_walk

(PHP 4, PHP 5)

array_walk Esegue una funzione su ogni elemento dell'array

Descrizione

bool array_walk ( array $&array , callback $funzione [, mixed $datiutente ] )

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esegue la funzione definita dall'utente identificata da funzione su ogni elemento di array. Normalmente funzione accetta due parametri. Il valore del parametro array viene passato per primo, la chiave/indice per secondo. Se il parametro datiutente è specificato, verrà passato come terzo parametro alla funzione callback.

Se funzione richiede più parametri di quanti gliene vengono passati, un errore di livello E_WARNING verrà generato ogni volta che array_walk() la chiama. Questi avvertimenti possono essere soppressi apponendo l'operatore d'errore @ alla chiamata di array_walk(), oppure usando error_reporting().

Nota:

Se funzione deve lavorare con i reali valori dell'array, specificare che il primo parametro di funzione deve essere passato come riferimento. A qesto punto ogni modifica a questi elementi verrà effettuata sull'array stesso.

Nota:

Il passaggio della chiave e di datiutente a func è stato aggiunto nella versione 4.0.

array_walk() non è influenzato dal puntatore interno dell'array array. array_walk() percorrerà l'intero array indipendentemente dalla posizione del puntatore. Per reinizializzare il puntatore, utilizzare reset(). In PHP 3, array_walk() reinizializza il puntatore.

Gli utenti non possono modificare l'array attraverso la funzione di callback, ad esempio aggiungere/togliere un elemento, o cancellare l'array su cui array_walk() è applicata. Se l'array viene cambiato, il comportamento di questa funzione non è definito ed è imprevedibile.

Example #1 esempio di array_walk()

<?php
$frutta 
= array("d"=>"limone""a"=>"arancia""b"=>"banana""c"=>"mela");

function 
modifica(&$elemento1$chiave$prefisso
{
    
$elemento1 "$prefisso$elemento1";
}

function 
stampa($elemento2$chiave
{
    echo 
"$chiave$elemento2<br />\n";
}

echo 
"Prima ...:\n";
array_walk($frutta'stampa');

array_walk($frutta'modifica''frutto');
echo 
"... e dopo:\n";

array_walk($frutta'stampa');
?>

Il risultato del programma sarà:

Prima ...:
d. limone
a. arancia
b. banana
c. mela
... e dopo:
d. frutto: limone
a. frutto: arancia
b. frutto: banana
c. frutto: mela

Vedere anche array_walk_recursive(), create_function(), list(), foreach, each(), call_user_func_array() e array_map()



array

(PHP 4, PHP 5)

array Crea un array

Descrizione

array array ([ mixed $... ] )

Restituisce un array contenente i parametri. Ai parametri si può dare un indice con l'operatore =>. Leggere la sezione relativa ai tipi per ulteriori informazioni sugli array.

Nota:

array() è un costrutto del linguaggio usato per rappresentare array letterali, e non una normale funzione.

La sintassi "indice => valori", separati da virgole, definisce indici e valori. indice può essere di tipo string o numerico. Quando l'indice è omesso, viene generato automaticamente un indice intero, a partire da 0. Se l'indice è un intero, il successivo indice generato sarà l'indice intero più grande + 1. Si noti che quando due indici identici vengono definiti, l'ultimo sovrascrive il primo.

L'esempio seguente dimostra come creare un array bidimensionale, come specificare le chiavi per gli array associativi, e come modificare la serie degli indici numerici negli array normali.

Example #1 Esempio di array()

<?php
$frutta 
= array (
    
"frutta"  => array("a" => "arancia""b" => "banana""c" => "mela"),
    
"numeri"  => array(123456),
    
"buche"   => array("prima"=> "seconda""terza")
)
?>

Example #2 Indice automatico con array()

<?php
$array 
= array(1111,  1=> 1,  => 119=> 13);
print_r($array);
?>

che stamperà:

Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 13
    [4] => 1
    [8] => 1
    [9] => 19
)

Si noti che l'indice '3' è definito due volte, e che mantiene il valore finale 13. L'indice 4 è definito dopo l'indice 8, e il successivo indice generato (valore 19) è 9, dal momento che l'indice più grande era 8.

Questo esempio crea un array che parte da 1 (1-based).

Example #3 Indice 1-based con array()

<?php
$primotrimestre 
= array(=> 'Gennaio''Febbraio''Marzo');
print_r($primotrimestre);
?>

che stamperà:

Array
(
    [1] => Gennaio
    [2] => Febbraio
    [3] => Marzo
)

Vedere anche array_pad(), list(), foreach e range().



arsort

(PHP 4, PHP 5)

arsort Ordina un array in ordine decrescente e mantiene le associazioni degli indici

Descrizione

bool arsort ( array $array [, int $sort_flags ] )

Questa funzione ordina un array in modo tale che i suoi indici mantengano la loro correlazione con gli elementi ai quali sono associati. Viene usata principalmente nell'ordinamento degli array associativi, quando la disposizione originaria degli elementi è importante.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Example #1 esempio di arsort()

<?php
$frutta 
= array("d" => "limone""a" => "arancia""b" => "banana""c" => "mela");
arsort($frutta);
reset($frutta);
while (list(
$chiave$valore) = each($frutta)) {
    echo 
"$chiave = $valore\n";
}
?>

Questo esempio mostrerà:

c = mela
d = limone
b = banana
a = arancia

I frutti sono ordinati in ordine alfabetico decrescente, e l'indice associato a ogni elemento è stato mantenuto.

È possibile modificare il comportamento dell'ordinamento usando il parametro opzionale sort_flags, per maggiori dettagli vedere sort().

vedere anche asort(), rsort(), ksort() e sort().



asort

(PHP 4, PHP 5)

asortOrdina un array e mantiene le associazioni degli indici

Descrizione

bool asort ( array $array [, int $sort_flags ] )

Questa funzione ordina un array in modo tale che i suoi indici mantengano la loro correlazione con gli elementi ai quali sono associati. Viene usata principalmente nell'ordinamento degli array associativi, quando la disposizione originaria degli elementi è importante.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Example #1 esempio di asort()

<?php
$frutta 
= array("d"=>"limone""a"=>"arancia""b"=>"banana""c"=>"mela");
asort($frutta);
reset($frutta);
while (list(
$chiave$valore) = each($frutta)) {
    echo 
"$chiave = $valore\n";
}
?>

Questo esempio mostrerà:

a = arancia
b = banana
d = limone
c = mela

I frutti sono ordinati in ordine alfabetico, e l'indice associato ad ogni elemento è stato mantenuto.

È possibile modificare il comportamento dell'ordinamento usando il parametro opzionale sort_flags, per maggiori dettagli vedere sort().

Vedere anche arsort(), rsort(), ksort() e sort().



compact

(PHP 4, PHP 5)

compact Crea un array contenente variabili e il loro valore

Descrizione

array compact ( mixed $varname [, mixed $... ] )

compact() accetta un numero variabile di parametri. Ogni parametro può essere una stringa contenente il nome della variabile, o un array di nomi di variabile. L'array può contenere altri array di nomi di variabile; compact() se ne occupa in modo ricorsivo.

Per ognuno di questi, compact() cerca la variabile con quel nome nella tabella dei simboli corrente, e la aggiunge all'array di output in modo tale che il nome della variabile diventi la chiave e i contenuti della variabile diventino il valore associato a quella chiave. In breve, compact() è l'opposto di extract(). Restituisce l'array di output con tutte le variabili aggiunte a quest'ultimo.

Qualsiasi stringa non valorizzata verrà semplicemente ignorata.

Nota: Gotcha

Dal momento che le variabili variabili non posso essere utilizzate con gli array Superglobal di PHP nelle funzioni, gli array Superglobal non possono essere passati alla funzione compact().

Example #1 esempio di compact()

<?php
$citta 
"Milano";
$provincia "MI";
$evento "SMAU";

$var_luoghi = array("citta""provincia");

$risultato compact("evento""niente"$var_luoghi);
?>

In questo modo, $risultato sarà:

Array
(
    [event] => SMAU
    [citta] => Milano
    [provincia] => MI
)

Vedere anche extract().



count

(PHP 4, PHP 5)

countConta gli elementi in una variabile, o le proprietà in un oggetto

Descrizione

int count ( mixed $var [, int $mode ] )

Restituisce il numero di elementi in var, la quale è di norma un array, dal momento che qualsiasi altro oggetto avrà un elemento.

Per gli oggetti, se SPL è installato, è possibile agganciarsi a count() implementando l'interfaccia Countable. L'interfaccia ha esattamente un metodo, count(), che ritorna il valore restituito dalla funzione count().

Se var non è un array o un oggetto con l'interfaccia Countable implementata, verrà restituito 1 C'è una eccezione, se var è NULL, verrà restituito 0.

Nota: Il parametro opzionale mode è disponibile da PHP 4.2.0.

Se il parametro opzionale mode è impostato a COUNT_RECURSIVE (o 1), count() conterà ricorsivamente l'array. Questo è utile in particolare per contare tutti gli elementi di un array multidimensionale. Il valore di default per mode è 0. count() non identifica le ricorsioni infinite.

Attenzione

count() può restituire 0 per una variabile che non è impostata, ma può anche restituire 0 per una variabile che è stata inizializzata con un array vuoto. Usare isset() per verificare se una variabile è impostata.

Vedere la sezione Array nel manuale per una spiegazione dettagliata di come gli array siano implementati ed usati in PHP.

Example #1 esempio di count()

<?php
$a
[0] = 1;
$a[1] = 3;
$a[2] = 5;
$risultato count($a);
//$risultato == 3

$b[0]  = 7;
$b[5]  = 9;
$b[10] = 11;
$risultato count($b);
// $risultato == 3;

$result count(null);
// $result == 0

$result count(false);
// $result == 1
?>

Example #2 esempio di count() ricorsiva (PHP >= 4.2.0)

<?php
$cibo 
= array('frutta' => array('arancia''banana''mela'),
              
'verdura' => array('carota''zucchina''piselli'));

// conteggio ricorsivo
echo count($cibp,COUNT_RECURSIVE); // output 8

// conteggio normale
echo count($cibo);                 // output 2

?>

Vedere anche is_array(), isset() e strlen().



current

(PHP 4, PHP 5)

currentRestituisce l'elemento corrente di un array

Descrizione

mixed current ( array $array )

Ogni array ha un puntatore interno all'elemento "corrente", che è inizializzato al primo elemento inserito nell'array.

La funzione current() restituisce il valore dell'elemento che è attualmente puntato dal puntatore interno. In ogni caso non muove il puntatore. Se il puntatore interno punta oltre la fine della lista di elementi, current() restituisce FALSE.

Avviso

Se l'array contiene elementi vuoti (0 o "", la stringa vuota) la funzione restituirà FALSE pure per questi elementi. Questo rende impossibile stabilire se si è veramente alla fine della lista in un array di questo tipo usando current(). Per attraversare in modo corretto un array che può contenere elementi vuoti, usare la funzione each().

Example #1 Esempio di current() e funzioni relative

<?php
$trasporti 
= array('piedi''bicicletta''automobile''aereo');
$mode current($trasporti); // $mode = 'piedi';
$mode next($trasporti);    // $mode = 'bicicletta';
$mode current($trasporti); // $mode = 'bicicletta';
$mode prev($trasporti);    // $mode = 'piedi';
$mode end($trasporti);     // $mode = 'aereo';
$mode current($trasporti); // $mode = 'aereo';
?>

Vedere anche end(), key(), next(), prev() e reset().



each

(PHP 4, PHP 5)

each Restituisce la corrente coppia chiave/valore di un array e incrementa il puntatore dell'array

Descrizione

array each ( array $array )

Restituisce la corrente coppia chiave/valore corrente di array e incrementa il puntatore interno dell'array. Questa coppia è restituita in un array di quattro elementi, con le chiavi 0, 1, key, and value. Gli elementi 0 e key contengono il nome della chiave dell'elemento dell'array, mentre 1 e value contengono i dati.

Se il puntatore interno dell'array punta oltre la fine dei contenuti dell'array, each() restituisce FALSE.

Example #1 esempi dieach()

<?php
$foo 
= array("bob""fred""jussi""jouni""egon""marliese");
$bar each($foo);
print_r($bar);
?>

$bar ora contiene la seguente coppia chiave/valore:

Array
(
    [1] => bob
    [value] => bob
    [0] => 0
    [key] => 0
)

<?php
$foo 
= array("Robert" => "Bob""Seppo" => "Sepi");
$bar each($foo);
print_r($bar);
?>

$bar ora contiene la seguente coppia chiave/valore:

Array
(
    [1] => Bob
    [value] => Bob
    [0] => Robert
    [key] => Robert
)

each() viene normalmente usata in congiunzione con list() nell'attraversamento di un array; ecco un esempio:

Example #2 Attraversamento di un array con each()

<?php
$frutta 
= array('a' => 'albicocca''b' => 'banana''c' => 'ciliegia');

reset($frutta);
while (list(
$chiave$valore) = each($frutta)) {
    echo 
"$chiave => $valore\n";
}
?>

Outputs:

a => albicocca
b => banana
c => ciliegia

Dopo l'esecuzione di each(), il puntatore dell'array viene lasciato sull'elemento successivo, o sull'ultimo elemento se si è alla fine dell'array. Si deve utilizzare reset() se si vuole riattraversare l'array usando each().

Attenzione

Poiché assegnare un array ad un'altra variabile reimposta il puntatore, il nostro esempio diventerebbe un loop infinito se assegnassimo $frutta ad un'altra variabile all'interno del ciclo.

Vedere anche key(), list(), current(), reset(), next(), prev() e foreach.



end

(PHP 4, PHP 5)

end Sposta il puntatore interno dell'array all'ultimo elemento

Descrizione

mixed end ( array $array )

end() fa avanzare il puntatore di array all'ultimo elemento, e restituisce il suo valore.

Example #1 Un semplice esempio di end()

<?php

$frutti 
= array('mela''banana''mirtillo');
echo 
end($frutti); // mirtillo
      
?>

Vedere anche current(), each(), prev(), next() e reset().



extract

(PHP 4, PHP 5)

extract Importa le variabili nella tabella dei simboli

Descrizione

int extract ( array $var_array [, int $extract_type [, string $prefix ]] )

Questa funzione viene usata per importare delle variabili da un array nella tabella dei simbloi corrente. Riceve un array associativo var_array e interpreta le chiavi come nomi di variabile e i valori come valori di variabile. Per ogni coppia chiave/valore verrà creata una variabile nella tabella dei simboli corrente, coerentemente con i parametri extract_type e prefix.

Nota:

Dalla versione 4.0.5 questa funzione restituisce il numero di variabili estratte.

Nota:

EXTR_IF_EXISTS e EXTR_PREFIX_IF_EXISTS sono stati introdotti nella versione 4.2.0.

Nota:

EXTR_REFS è stata introdotta nella versione 4.3.0.

extract() controlla ogni chiave per stabilire se costituisce un nome valido di variabile e se ci sono collisioni con variabili già esistenti nella tabella dei simboli. Il modo in cui vengono trattate le chiavi invalide/numeriche e le collisioni è determinato da extract_type. Può essere uno dei seguenti valori:

EXTR_OVERWRITE
Se avviene una collisione, sovrascrive la variabile esistente.
EXTR_SKIP
Se avviene una collisione, non sovrascrive la variabile esistente.
EXTR_PREFIX_SAME
Se avviene una collisione, mette come prefisso al nome della variabile il parametro prefix.
EXTR_PREFIX_ALL
Mette come prefisso di tutte le variabili il parametro prefix. Dal PHP 4.0.5 questo avviene anche per i valori numerici.
EXTR_PREFIX_INVALID
Mette come prefisso, solo per i nomi di variabili invalidi/numerici, il parametro prefix. Questa opzione è stata aggiunta in PHP 4.0.5.
EXTR_IF_EXISTS
Sovrascrive la variabile solo se già esiste nella tabella dei simboli, altrimenti non fa nulla. Questo è utile per definire una lista di variabili valide e quindi estrarre solo quelle variabili definite in $_REQUEST, per esempio. Questa opzione è stata aggiunta in PHP 4.2.0.
EXTR_PREFIX_IF_EXISTS
Crea nomi di variabili con il prefisso solo se la versione senza prefisso della stessa variable esiste nella tabella dei simboli. Questa opzione è stata aggiunta in PHP 4.2.0.
EXTR_REFS
Estrae le variabili come riferimenti. Questo in effetti significa che i valori delle variabili importate referenziano i valori del parametro var_array. Si può usare questo flag da solo o combinarlo con gli altri mediante un OR nel parametro extract_type. Questo flag è stato aggiunto nel PHP 4.3.0.

Se extract_type non è specificato, si assume che sia EXTR_OVERWRITE.

Si noti che prefix è richiesto solo se extract_type è EXTR_PREFIX_SAME, EXTR_PREFIX_ALL, EXTR_PREFIX_INVALID o EXTR_PREFIX_IF_EXISTS. Se il risultato non è un nome di variabile valido, non viene importato nella tabella dei simboli.

extract() restituisce il numero di variabili importate con successo nella tabella dei simboli.

Avviso

Non utilizzare extract() su dati non convalidati, come gli input degli utenti ($_GET, ...). Se lo si deve fare, ad esempio per eseguire temporaneamente vecchio codice basato su register_globals, sincerarsi di utilizzare uno dei valori di extract_type come EXTR_SKIP e ricordarsi che occorre estrarre $_SERVER, $_SESSION, $_COOKIE, $_POST e $_GET in questo ordine.

Un possibile uso di extract() è quello di importare nella tabella dei simboli variabili contenute in un array associativo restituito da wddx_deserialize().

Example #1 esempio diextract()

<?php

/* Si supponga che $array_variabili sia un array restituito da
   wddx_deserialize */

$dimensione "grande";
$array_variabili = array("colore" => "blu",
                         
"dimensione"  => "media",
                         
"forma" => "sfera");
extract($array_variabiliEXTR_PREFIX_SAME"wddx");

echo 
"$colore$dimensione$forma$wddx_dimensione\n";

?>

L'esempio mostrerà:

blu, grande, sfera, media

La variabile $dimensione non è stata sovrascritta, in quanto è specificato EXTR_PREFIX_SAME, che ha portato alla creazione di $wddx_dimensione. Se fosse stato specificato EXTR_SKIP, $wddx_dimensione non sarebbe stata creata. EXTR_OVERWRITE avrebbe portato $dimensione ad assumere il valore "medio", e EXTR_PREFIX_ALL avrebbe fatto creare nuove variabili chiamate $wddx_colore, $wddx_dimensione e $wddx_forma.

Si deve usare un array associativo, un array indicizzato numericamente non produce risultati a meno di non usare EXTR_PREFIX_ALL o EXTR_PREFIX_INVALID.

Vedere anche compact().



in_array

(PHP 4, PHP 5)

in_arrayControlla se un valore è presente in un array

Descrizione

bool in_array ( mixed $ago , array $pagliaio [, bool $strict ] )

Cerca in pagliaio per trovare ago e restituisce TRUE se viene trovato nell'array, FALSE altrimenti.

Se il terzo parametro strict è TRUE la funzione in_array() controllerà anche il tipo di ago nell'array haystack.

Nota:

Se ago è una stringa, il confronto è effettuato tenendo conto delle maiuscole/minuscole.

Nota:

Nelle versioni di PHP precedenti la 4.2.0. ago non poteva essere un array.

Example #1 esempio di in_array()

<?
$os 
= array("Mac""NT""Irix""Linux");
if (
in_array("Irix"$os)) {
    echo 
"Trovato Irix";
}
if (
in_array("mac"$os)) {
    echo 
"Trovato mac";
}
?>

La seconda condizione fallisce perché in_array() tiene conto di maiuscole e minuscole, quindi il programma mostrerà:

Trovato Irix

Example #2 esempio di in_array() con strict

<?php
$a 
= array('1.10'12.41.13);

if (
in_array('12.4'$atrue)) {
    echo 
"'12.4' trovato con controllo strict\n"
}

if (
in_array(1.13$atrue)) {
    echo 
"1.13 trovato con controllo strict\n"
}
?>

Questo mostrerà:

1.13 trovato con controllo strict

Example #3 in_array() con un array come ago

<?php
$a 
= array(array('p''h'), array('p''r'), 'o');

if (
in_array(array('p''h'), $a)) {
    echo 
"'ph' trovato\n";
}

if (
in_array(array('f''i'), $a)) {
    echo 
"'fi' non trovato\n";
}

if (
in_array('o'$a)) {
    echo 
"'o' trovato\n";
}
?>

Questo ritornerà:

  'ph' trovato
  'o' trovato

Vedere anche array_search(), array_key_exists() e isset().



key_exists

(PHP 4 >= 4.0.6, PHP 5)

key_existsAlias di array_key_exists()

Descrizione

Questa funzione è sinonimo di: array_key_exists().



key

(PHP 4, PHP 5)

keyEstrae la chiave corrente da un array associativo

Descrizione

mixed key ( array &$array )

key() restituisce la chiave corrispondente all'attuale posizione del puntatore interno all'array.

Elenco dei parametri

array

L'array.

Valori restituiti

La funzione key() restituisce la chiave dell'elemento dell'array che è attualmente indicato dal puntatore interno. Non modifica il puntatore. Se il puntatore punta oltre la fine della lista degli elementi, oppure se l'array è vuoto, key() restituisce NULL.

Esempi

Example #1 esempio di key()

<?php
$array 
= array(
    
'frutto1' => 'mela',
    
'frutto2' => 'arancia',
    
'frutto3' => 'uva',
    
'frutto4' => 'mela',
    
'frutto5' => 'mela');

// questo ciclo mostra tutte le chiavi
// dell'array associativo che sono uguali a 'mela'
while ($nome_frutto current($array)( {
    if (
$nome_frutto == 'mela') {
        echo 
key($array).'<br />';
    }
    
next($array);
}
?>

Il precedente esempio visualizzerà:

frutto1<br />
frutto4<br />
frutto5<br />

Vedere anche:

  • current() - Restituisce l'elemento corrente di un array
  • next() - Incrementa il puntatore interno dell'array



krsort

(PHP 4, PHP 5)

krsortOrdina rispetto alle chiavi di un array in ordine inverso

Descrizione

bool krsort ( array $array [, int $sort_flags ] )

Ordina un array rispetto alle sue chiavi, in ordine inverso, mantenendo le associazioni. Questa funzione è utile con gli array associativi.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Example #1 Esempio di krsort()

<?php
$frutti 
= array("d"=>"limone""a"=>"arancio""b"=>"banana""c"=>"mela");
krsort($frutti);
reset($frutti);
while (list(
$chiave$valore) = each($frutti)) {
    echo 
"$chiave = $valore\n";
}
?>

Questo esempio mostrerà:

d = limone
c = mela
b = banana
a = arancio

Si può modificare il comportamento dell'ordinamento usando il parametro opzionale sort_flags, per ulteriori dettagli vedere sort().

Vedere anche asort(), arsort(), ksort(), sort(), natsort() e rsort().



ksort

(PHP 4, PHP 5)

ksortOrdina rispetto alle chiavi di un array

Descrizione

bool ksort ( array $array [, int $sort_flags ] )

Ordina un array rispetto alle sue chiavi, mantenendo le associazioni. Questa funzione è utile con gli array associativi.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Example #1 esempio di ksort()

<?php
$frutti 
= array("d"=>"limone""a"=>"arancia""b"=>"banana""c"=>"mela");
ksort($frutti);
reset($frutti);
while (list(
$chiave$valore) = each($frutti)) {
    echo 
"$chiave = $valore\n";
}
?>

Questo esempio mostrerà:

a = arancia
b = banana
c = mela
d = limone

Si può modificare il comportamento dell'ordinamento usando il parametro opzionale sort_flags, per ulteriori dettagli vedere sort().

Vedere anche asort(), arsort(), krsort(), uksort(), sort(), natsort() e rsort().

Nota:

Il secondo parametro è stato aggiunto in PHP 4.



list

(PHP 4, PHP 5)

list Assegna valori a delle variabili come se fossero un array

Descrizione

void list ( mixed $... )

Come array(), questa non è in realtà una funzione, bensì un costrutto del linguaggio. list() è usata per assegnare valori ad una lista di variabili in una sola operazione.

Nota:

list() funziona solo su array numerici e si aspetta che gli indici numerici partano da 0.

Example #1 esempio di list()

<?php

$info 
= array('caffè''scuro''caffeina');

// assegna a tutte le variabili
list($bevanda$colore$componente) = $info;
echo 
"Il $bevanda è $colore e la $componente lo rende speciale.\n";

// assegna solo in parte
list($bevanda, , $componente) = $info;
echo 
"Il $bevanda ha la $componente.\n";

// oppure assegnamo solo l'ultima variabile
list( , , $componente) = $info;
echo
"Ho voglia di $bevanda!\n";

?>

Example #2 Esempio di uso di list()

<table>
 <tr>
  <th>Nome dell'impiegato</th>
  <th>Stipendio</th>
 </tr>

<?php

$risultato 
mysql_query("SELECT id, nome, stipendio FROM impiegati"$conn);
while (list(
$id$nome$stipendio) = mysql_fetch_row ($risultato)) {
    echo (
" <tr>\n".
          
"  <td><a href=\"info.php?id=$id\">$nome</a></td>\n".
          
"  <td>$stipendio</td>\n".
          
" </tr>\n");
}

?>

</table>

Avviso

list() assegna i valori cominciando dal parametro più a destra. Se si stanno usando variabili semplici, non ci si deve preoccupare di questo fatto. Ma se si stanno usando array con indici di solito ci si aspetta che l'ordine degli indici negli array sia quello scritto negli argomenti della funzione list(), da sinistra a destra; non è così. L'ordine è invertito.

Example #3 Utilizzo di list() con gli indici

<?php

$info 
= array('caffè''nero''caffeina');

list(
$a[0], $a[1], $a[2]) = $info;

var_dump($a);

?>

Restituisce il segente risultato (si noti l'ordine degli elementi rispetto all'ordine con cui sono stati scritti nella sintassi di list()).

array(3) {
  [2]=>
  string(8) "caffeina"
  [1]=>
  string(4) "nero"
  [0]=>
  string(5) "caffè"
}

Vedere anche each() e array() e extract().



natcasesort

(PHP 4, PHP 5)

natcasesort Ordina un array usando un algoritmo di "ordine naturale" non sensibile alle maiuscole/minuscole

Descrizione

void natcasesort ( array $array )

Questa funziona implementa un algoritmo di ordinamento che ordina le stringhe alfanumeriche come lo farebbe un essere umano, mantenendo le associazioni chiavi/valori. Questo è chiamato "ordine naturale".

natcasesort() è una versione, non sensibile alle maiuscole/minuscole, di natsort().

Example #1 esempio di natcasesort()

<?php
$array1 
$array2 = array('IMG0.png''img12.png''img10.png''img2.png''img1.png''IMG3.png');

sort($array1);
echo 
"Ordinamento standard\n";
print_r($array1);

natcasesort($array2);
echo 
"\nOrdinamento naturale (con maiuscole non significative)\n";
print_r($array2);
?>

Questo codice genererà il seguente risultato:

Ordinamento standard
Array
(
    [0] => IMG0.png
    [1] => IMG3.png
    [2] => img1.png
    [3] => img10.png
    [4] => img12.png
    [5] => img2.png
)

Ordinamento naturale (con maiuscole non significative)
Array
(
    [0] => IMG0.png
    [4] => img1.png
    [3] => img2.png
    [5] => IMG3.png
    [2] => img10.png
    [1] => img12.png
)

Per maggiori informazioni vedere la pagina di Martin Pool » Natural Order String Comparison .

Vedere anche sort(), natsort(), strnatcmp() e strnatcasecmp().



natsort

(PHP 4, PHP 5)

natsort Ordina un array usando un algoritmo di "ordine naturale"

Descrizione

void natsort ( array $array )

Questa funzione implementa un algoritmo di ordinamento che ordina le stringhe alfanumeriche come lo farebbe un essere umano, mantenendo l'associazione chiavi/valori. Questo è chiamato "ordine naturale". Un esempio della differenza tra questo algoritmo e quello normalmente usato dai computer (usato in sort()) è dato qui sotto:

Example #1 esempio di natsort()

<?php
$array1 
$array2 = array("img12.png""img10.png""img2.png""img1.png");

sort($array1);
echo 
"Ordinamento standard\n";
print_r($array1);

natsort($array2);
echo 
"\nOrdinamento naturale\n";
print_r($array2);
?>

Questo codice genererà il seguente risultato:

Ordinamento standard
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)

Ordinamento naturale
Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)

Per ulteriori informazioni vedere la pagina di Martin Pool » Natural Order String Comparison .

Vedere anche natcasesort(), strnatcmp() e strnatcasecmp().



next

(PHP 4, PHP 5)

next Incrementa il puntatore interno dell'array

Descrizione

mixed next ( array $array )

Restituisce l'elemento dell'array che sta nella posizione successiva a quella attuale indicata dal puntatore interno, oppure FALSE se non ci sono altri elementi.

next() si comporta come current(), con una differenza. Incrementa il puntatore interno dell'array di una posizione, prima di restituire il valore dell'elemento. Ciò significa che restituisce l'elemento successivo e incrementa il puntatore di una posizione. Se l'incremento fa sì che il puntatore vada oltre la fine della lista di elementi, next() restituisce FALSE.

Avviso

Se l'array contiene elementi vuoti, o elementi che hanno il valore chiave uguale a 0 allora questa funzione restituisce FALSE anche per questi elementi. Per esplorare correttamente un array che può contenere elementi vuoti o con chiave uguale a 0 vedere la funzione each().

Example #1 Esempio di next() e funzioni relative

<?php
$trasporti 
= array('piedi''bicicletta''automobile''aereo');
$mode current($trasporti); // $mode = 'piedi';
$mode next($trasporti);    // $mode = 'bicicletta';
$mode next($trasporti);    // $mode = 'automobile';
$mode prev($trasporti);    // $mode = 'piedi';
$mode end($trasporti);     // $mode = 'aereo';
?>

Vedere anche current(), end(), prev() e reset().



pos

(PHP 4, PHP 5)

posRestituisce l'elemento corrente di un array

Descrizione

Questo è un alias di current().



prev

(PHP 4, PHP 5)

prevDecrementa il puntatore interno dell'array

Descrizione

mixed prev ( array $array )

Restituisce l'elemento dell'array che sta nella posizione precedente a quella attuale indicata dal puntatore interno, oppure FALSE se non ci sono altri elementi.

Avviso

Se l'array contiene degli elementi vuoti la funzione restituirà FALSE per questi valori. Per esplorare correttamente un array che può contenere elementi vuoti vedere la funzione each().

prev() si comporta come next(), tranne per il fatto di decrementare il puntatore interno di una posizione, invece che incrementarlo.

Example #1 Esempio di prev() e funzioni relative

<?php
$trasporti 
= array('piedi''bicicletta''automobile''aereo');
$mode current($trasporti); // $mode = 'piedi';
$mode next($trasporti);    // $mode = 'bicicletta';
$mode next($trasporti);    // $mode = 'automobile';
$mode prev($trasporti);    // $mode = 'piedi';
$mode end($trasporti);     // $mode = 'aereo';
?>

Vedere anche current(), end(), next() e reset().



range

(PHP 4, PHP 5)

range Crea un array contenente una serie di elementi

Descrizione

array range ( int $min , int $max [, int $step ] )

range() restituisce una serie di elementi da min a max, inclusiva. Se min > max, la sequenza sarà decrescente.

Nota: Nuovo parametro
Il parametro opzionale step è stato aggiunto nel PHP 5.0.0.

Se il valore step è specificato, verrà utilizzato come incremento tra gli elementi della sequenza. step deve essere un numero positivo. Se non specificato, il valore predefinito per step è 1.

Example #1 esempi di range()

<?php
// array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
foreach (range(012) as $numero) {
    echo 
$numero;
}

// Il parametro step è stato introdotto nel PHP 5.0.0
// array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
foreach (range(010010) as $numero) {
    echo 
$numero;
}

// L'utilizzo dei caratteri è stato aggiunto nel PHP 4.1.0
// array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');
foreach (range('a''i') as $lettera) {
    echo 
$lettera;
}
// array('c', 'b', 'a');
foreach (range('c''a') as $lettera) {
    echo 
$lettera;
}
?>

Nota:

Prima della versione 4.1.0 la funzione range() generava solo array crescenti di interi. Il supporto per le sequenze di caratteri e array decrescenti è stata aggiunta nella 4.1.0. I valori delle sequenze di caratteri sono limitati alla lunghezza di 1 carattere. Se viene inserito un valore con una lunghezza maggiore, viene utilizzato solo il primo carattere.

Attenzione

Nel PHP dalla versione 4.1.0 alla 4.3.2, range() vede le stringhe numeriche come stringhe e non come interi. Quindi, verranno utilizzate come sequenze di caratteri. Per esempio, "4242" viene trattato come "4".

Vedere shuffle(), array_fill() e foreach.



reset

(PHP 4, PHP 5)

reset Reimposta il puntatore interno di un array sulla posizione iniziale

Descrizione

mixed reset ( array $array )

reset() riporta il puntatore di array sul primo elemento e ne restituisce il valore.

Example #1 esempio di reset()

<?php

$array 
= array('passo uno''passo due''passo tre''passo quattro');
  
// di default, il puntatore è sul primo elemento  
echo current($array) . "<br />\n"// "passo uno"

// salta due passi    
next($array);                                 
next($array);
echo 
current($array) . "<br />\n"// "passo tre"
  
// reset del puntatore, ricomincia dal passo uno
reset($array);
echo 
current($array) . "<br />\n"// "passo uno"
  
?>

Vedere anche current(), each(), next(), e prev().



rsort

(PHP 4, PHP 5)

rsortOrdina un array in ordine decrescente

Descrizione

bool rsort ( array $array [, int $sort_flags ] )

Questa funzione ordina un array in ordine decrescente.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Example #1 esempio di rsort()

<?php
$frutti 
= array("limone""arancia""banana""mela");
rsort($frutti);
reset($frutti);
while (list(
$chiave$valore) = each($frutti)) {
    echo 
"$chiave = $valore\n";
}
?>

Questo esempio mostrerà:

0 = mela
1 = limone
2 = banana
3 = arancia

I frutti sono stati ordinati in ordine alfabetico decrescente.

Si può modificare il comportamento dell'ordinamento usando il parametro opzionale sort_flags, per maggiori dettagli vedere sort().

Vedere anche arsort(), asort(), ksort(), sort() e usort().



shuffle

(PHP 4, PHP 5)

shuffleMescola un array

Descrizione

void shuffle ( array $array )

Questa funzione mescola un array (rende casuale l'ordine degli elementi).

Example #1 esempio di shuffle()

<?php
$numeri 
range(120);
srand((float)microtime() * 1000000);
shuffle($numeri);
while (list(, 
$numero) = each($numeri)) {
    echo 
"$numero ";
}
?>

Nota: Dal PHP 4.2.0, non c'è più bisogno di inizializzare il generatore di nomeri casuali con srand() o mt_srand() dal momento che questo viene fatto automaricamente.

Vedere anche arsort(), asort(), ksort(), rsort(), sort() e usort().



sizeof

(PHP 4, PHP 5)

sizeofAlias di count()

Descrizione

La funzione è un alias di count().



sort

(PHP 4, PHP 5)

sortOrdina un array

Descrizione

bool sort ( array $&array [, int $sort_flags ] )

Questa funzione ordina un array. Gli elementi vengono disposti dal più piccolo al più grande.

Nota: Questa funzione assegna nuove chiavi agli elementi di array. Quindi non si limita a riordinare le chiavi, ma rimuove tutte le chiavi che siano state assegnate.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Example #1 esempio di sort()

<?php

$frutti 
= array("limone""arancia""banana""mela");
sort($frutti);
reset($frutti);
while (list(
$chiave$valore) = each($frutti)) {
    echo 
"frutti[" $chiave "] = " $valore "\n";
}

?>

Questo esempio mostrerà:

frutti[0] = arancia
frutti[1] = banana
frutti[2] = limone
frutti[3] = mela

I frutti sono stati ordinati in ordine alfabetico.

Il secondo parametro opzionale sort_flags può essere usato per modificare il comportamento dell'ordinamento, usando i seguenti valori:

flag d'ordinamento:

  • SORT_REGULAR - compara gli elementi in modo normale
  • SORT_NUMERIC - compara gli elementi numericamente
  • SORT_STRING - compara gli elementi convertiti in stringa

Nota:

Il secondo parametro è stato aggiunto in PHP 4.

Vedere anche arsort(), asort(), ksort(), natsort(), natcasesort(), rsort(), usort(), array_multisort() e uksort().



uasort

(PHP 4, PHP 5)

uasort Ordina un array mediante una funzione definita dall'utente e mantiene le associazioni

Descrizione

bool uasort ( array $array , callback $cmp_function )

Questa funzione ordina un array in modo tale che le chiavi mantengano la loro correlazione con gli elementi dell'array a cui sono associate. Questo è utile quando si ordinano array associativi in cui l'ordine degli elementi è importante. La funzione di comparazione deve essere fornita dall'utente.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Nota:

Vedere usort() e uksort() per esempio di funzioni di comparazione.

Vedere anche usort(), uksort(), sort(), asort(), arsort(), ksort() e rsort().



uksort

(PHP 4, PHP 5)

uksort Ordina rispetto alle chiavi di un array mediante una funzione definita dall'utente

Descrizione

bool uksort ( array $array , callback $cmp_function )

uksort() ordina rispetto alle chiavi di un array mediante una funzione di comparazione definita dall'utente. Se si vuole ordinare un array con dei criteri non usuali, si deve usare questa funzione.

La funzione cmp_function deve accettare due parametri che saranno valorizzati con coppie di chiavi di array. La funzione di confronto deve restituire un intero minore, uguale o maggiore di zero se il primo argomento è considerato minore, uguale o maggiore del secondo.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Example #1 esempio di uksort()

<?php
function cmp($a$b
{
    if (
$a == $b) {
        return 
0;
    }
    return (
$a $b) ? -1;
}

$a = array(=> "quattro"=> "tre"20 => "venti"10 => "dieci");

uksort($a"cmp");

while (list(
$chiave$valore) = each($a)) {
    echo 
"$chiave$valore\n";
}
?>

Questo esempio mostrerà:

20: venti
10: dieci
4: quattro
3: tre

Vedere anche usort(), uasort(), sort(), asort(), arsort(), ksort(), natsort() e rsort().



usort

(PHP 4, PHP 5)

usort Ordina un array mediante una funzione definita dall'utente

Descrizione

bool usort ( array $&array , callback $cmp_function )

Ordina i valori di un array mediante una funzione di comparazione definita dall'utente. Se si vuole ordinare un array con dei criteri non usuali, si deve usare questa funzione.

La funzione di comparazione deve restituire un intero minore, uguale o superiore a zero se il primo elemento è da considerarsi rispettivamente minore, uguale o maggiore del secondo.

Nota:

Se due parametri vengono valutati come uguali, il loro ordinamento nell'array ordinato è indefinito. Fino al PHP 4.0.6 le funzioni definite dall'utente mantenevano l'ordine originario per questi elementi, ma con il nuovo algoritmo di ordinamento introdotto con la versione 4.1.0 questo non succede più dal momento che non c'è un modo per ottenerlo in maniera efficiente.

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Example #1 esempio di usort()

<?php
function cmp($a$b
{
    if (
$a == $b) {
        return 
0;
    }
    return (
$a $b) ? -1;
}

$a = array(32561);

usort($a"cmp");

while (list(
$chiave$valore) = each($a)) {
    echo 
"$chiave$valore\n";
}
?>

Questo esempio mostrerà:

0: 1
1: 2
2: 3
3: 5
4: 6

Nota:

Ovviamente, in questo caso banale di ordinamento decrescente la funzione sort() sarebbe stata più appropriata.

Example #2 esempio di usort() con un array multidimensionale

<?php
function cmp($a$b
{
    return 
strcmp($a["frutto"], $b["frutto"]);
}

$frutti[0]["frutto"] = "limoni";
$frutti[1]["frutto"] = "arance";
$frutti[2]["frutto"] = "uva";

usort($frutti"cmp");

while (list(
$chiave$valore) = each($frutti)) {
    echo 
"\$frutti[$chiave]: " $valore["frutto"] . "\n";
}
?>

Quando si ordina un array multidimensionale, $a e $b contengono riferimenti al primo indice dell'array.

Questo esempio mostrerà:

$frutti[0]: arance
$frutti[1]: limoni
$frutti[2]: uva

Example #3 esempio di usort() usando una funzione membro di un oggetto

<?php
class OggettoTest {
    var 
$nome;

    function 
OggettoTest($nome
    {
        
$this->nome $nome;
    }

    
/* Questa è la funzione statica di comparazione: */
    
function comp_ogg($a$b
    {
        
$al strtolower($a->nome);
        
$bl strtolower($b->nome);
        if (
$al == $bl) {
            return 
0;
        }
        return (
$al $bl) ? +: -1;
    }
}

$a[] = new OggettoTest("c");
$a[] = new OggettoTest("b");
$a[] = new OggettoTest("d");

usort($a, array("OggettoTest""comp_ogg"));

foreach (
$a as $voce) {
    echo 
$voce->nome."\n";
}
?>

Questo esempio mostrerà:

b
c
d

Vedere anche uasort(), uksort(), sort(), asort(), arsort(),ksort(), natsort() e rsort().


Indice dei contenuti

  • array_change_key_case — Restituisce un array con tutte le chiavi cambiate in maiuscolo o in minuscolo
  • array_chunk — Spezza un array in tronconi
  • array_column — Return the values from a single column in the input array
  • array_combine — Crea un'array utilizzando un'array per le chiavi ed un altro per i suoi valori
  • array_count_values — Conta tutti i valori di un array
  • array_diff_assoc — Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
  • array_diff_key — Computes the difference of arrays using keys for comparison
  • array_diff_uassoc — Computes the difference of arrays with additional index check which is performed by a user supplied callback function
  • array_diff_ukey — Computes the difference of arrays using a callback function on the keys for comparison
  • array_diff — Calcola la differenza di due o più array
  • array_fill_keys — Fill an array with values, specifying keys
  • array_fill — Riempie un array con i valori specificati
  • array_filter — Filtra gli elementi di un array usando una funzione callback
  • array_flip — Scambia tutte le chiavi di un array con i loro valori associati
  • array_intersect_assoc — Calcola l'intersezione degli array con un ulteriore controllo sugli indici
  • array_intersect_key — Computes the intersection of arrays using keys for comparison
  • array_intersect_uassoc — Computes the intersection of arrays with additional index check, compares indexes by a callback function
  • array_intersect_ukey — Computes the intersection of arrays using a callback function on the keys for comparison
  • array_intersect — Calcola l'intersezione degli arrays
  • array_key_exists — Controlla se l'indice (o chiave) specificato esiste nell'array
  • array_keys — Restituisce tutte le chiavi di un array
  • array_map — Applica la funzione callback a tutti gli elementi dell'array dato
  • array_merge_recursive — Fonde due o più array in modo ricorsivo
  • array_merge — Fonde uno o più array
  • array_multisort — Ordina array multipli o multidimensionali
  • array_pad — Riempie con un valore un array fino alla lunghezza specificata
  • array_pop — Estrae l'elemento alla fine dell'array
  • array_product — Calculate the product of values in an array
  • array_push — Accoda uno o più elementi ad un array
  • array_rand — Estrae a caso uno o più elementi da un array
  • array_reduce — Riduce iterativamente l'array a un singolo valore utilizzando una funzione callback
  • array_replace_recursive — Replaces elements from passed arrays into the first array recursively
  • array_replace — Replaces elements from passed arrays into the first array
  • array_reverse — Restituisce un array con gli elementi in ordine invertito
  • array_search — Ricerca un dato valore in un array e ne restituisce la chiave corrispondente, se la ricerca ha successo.
  • array_shift — Estrae l'elemento alla testa dell'array
  • array_slice — Estrae un sottoinsieme da un array
  • array_splice — Rimuove una porzione dell'array e la sostituisce con altro
  • array_sum — Calcola la somma dei valori di un array
  • array_udiff_assoc — Computes the difference of arrays with additional index check, compares data by a callback function
  • array_udiff_uassoc — Computes the difference of arrays with additional index check, compares data and indexes by a callback function
  • array_udiff — Computes the difference of arrays by using a callback function for data comparison
  • array_uintersect_assoc — Computes the intersection of arrays with additional index check, compares data by a callback function
  • array_uintersect_uassoc — Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions
  • array_uintersect — Computes the intersection of arrays, compares data by a callback function
  • array_unique — Rimuove i valori duplicati di un array
  • array_unshift — Inserisce uno o più elementi all'inizio dell'array
  • array_values — Restituisce tutti i valori di un array
  • array_walk_recursive — Apply a user function recursively to every member of an array
  • array_walk — Esegue una funzione su ogni elemento dell'array
  • array — Crea un array
  • arsort — Ordina un array in ordine decrescente e mantiene le associazioni degli indici
  • asort — Ordina un array e mantiene le associazioni degli indici
  • compact — Crea un array contenente variabili e il loro valore
  • count — Conta gli elementi in una variabile, o le proprietà in un oggetto
  • current — Restituisce l'elemento corrente di un array
  • each — Restituisce la corrente coppia chiave/valore di un array e incrementa il puntatore dell'array
  • end — Sposta il puntatore interno dell'array all'ultimo elemento
  • extract — Importa le variabili nella tabella dei simboli
  • in_array — Controlla se un valore è presente in un array
  • key_exists — Alias di array_key_exists
  • key — Estrae la chiave corrente da un array associativo
  • krsort — Ordina rispetto alle chiavi di un array in ordine inverso
  • ksort — Ordina rispetto alle chiavi di un array
  • list — Assegna valori a delle variabili come se fossero un array
  • natcasesort — Ordina un array usando un algoritmo di "ordine naturale" non sensibile alle maiuscole/minuscole
  • natsort — Ordina un array usando un algoritmo di "ordine naturale"
  • next — Incrementa il puntatore interno dell'array
  • pos — Restituisce l'elemento corrente di un array
  • prev — Decrementa il puntatore interno dell'array
  • range — Crea un array contenente una serie di elementi
  • reset — Reimposta il puntatore interno di un array sulla posizione iniziale
  • rsort — Ordina un array in ordine decrescente
  • shuffle — Mescola un array
  • sizeof — Alias di count
  • sort — Ordina un array
  • uasort — Ordina un array mediante una funzione definita dall'utente e mantiene le associazioni
  • uksort — Ordina rispetto alle chiavi di un array mediante una funzione definita dall'utente
  • usort — Ordina un array mediante una funzione definita dall'utente

  • Introduzione
  • Installazione/Configurazione
  • Costanti predefinite
  • Sorting Arrays
  • Array Funzioni
    • array_change_key_case — Restituisce un array con tutte le chiavi cambiate in maiuscolo o in minuscolo
    • array_chunk — Spezza un array in tronconi
    • array_column — Return the values from a single column in the input array
    • array_combine — Crea un'array utilizzando un'array per le chiavi ed un altro per i suoi valori
    • array_count_values — Conta tutti i valori di un array
    • array_diff_assoc — Calcola la differenza tra due o più array con un ulteriore controllo sull'indice
    • array_diff_key — Computes the difference of arrays using keys for comparison
    • array_diff_uassoc — Computes the difference of arrays with additional index check which is performed by a user supplied callback function
    • array_diff_ukey — Computes the difference of arrays using a callback function on the keys for comparison
    • array_diff — Calcola la differenza di due o più array
    • array_fill_keys — Fill an array with values, specifying keys
    • array_fill — Riempie un array con i valori specificati
    • array_filter — Filtra gli elementi di un array usando una funzione callback
    • array_flip — Scambia tutte le chiavi di un array con i loro valori associati
    • array_intersect_assoc — Calcola l'intersezione degli array con un ulteriore controllo sugli indici
    • array_intersect_key — Computes the intersection of arrays using keys for comparison
    • array_intersect_uassoc — Computes the intersection of arrays with additional index check, compares indexes by a callback function
    • array_intersect_ukey — Computes the intersection of arrays using a callback function on the keys for comparison
    • array_intersect — Calcola l'intersezione degli arrays
    • array_key_exists — Controlla se l'indice (o chiave) specificato esiste nell'array
    • array_keys — Restituisce tutte le chiavi di un array
    • array_map — Applica la funzione callback a tutti gli elementi dell'array dato
    • array_merge_recursive — Fonde due o più array in modo ricorsivo
    • array_merge — Fonde uno o più array
    • array_multisort — Ordina array multipli o multidimensionali
    • array_pad — Riempie con un valore un array fino alla lunghezza specificata
    • array_pop — Estrae l'elemento alla fine dell'array
    • array_product — Calculate the product of values in an array
    • array_push — Accoda uno o più elementi ad un array
    • array_rand — Estrae a caso uno o più elementi da un array
    • array_reduce — Riduce iterativamente l'array a un singolo valore utilizzando una funzione callback
    • array_replace_recursive — Replaces elements from passed arrays into the first array recursively
    • array_replace — Replaces elements from passed arrays into the first array
    • array_reverse — Restituisce un array con gli elementi in ordine invertito
    • array_search — Ricerca un dato valore in un array e ne restituisce la chiave corrispondente, se la ricerca ha successo.
    • array_shift — Estrae l'elemento alla testa dell'array
    • array_slice — Estrae un sottoinsieme da un array
    • array_splice — Rimuove una porzione dell'array e la sostituisce con altro
    • array_sum — Calcola la somma dei valori di un array
    • array_udiff_assoc — Computes the difference of arrays with additional index check, compares data by a callback function
    • array_udiff_uassoc — Computes the difference of arrays with additional index check, compares data and indexes by a callback function
    • array_udiff — Computes the difference of arrays by using a callback function for data comparison
    • array_uintersect_assoc — Computes the intersection of arrays with additional index check, compares data by a callback function
    • array_uintersect_uassoc — Computes the intersection of arrays with additional index check, compares data and indexes by a callback functions
    • array_uintersect — Computes the intersection of arrays, compares data by a callback function
    • array_unique — Rimuove i valori duplicati di un array
    • array_unshift — Inserisce uno o più elementi all'inizio dell'array
    • array_values — Restituisce tutti i valori di un array
    • array_walk_recursive — Apply a user function recursively to every member of an array
    • array_walk — Esegue una funzione su ogni elemento dell'array
    • array — Crea un array
    • arsort — Ordina un array in ordine decrescente e mantiene le associazioni degli indici
    • asort — Ordina un array e mantiene le associazioni degli indici
    • compact — Crea un array contenente variabili e il loro valore
    • count — Conta gli elementi in una variabile, o le proprietà in un oggetto
    • current — Restituisce l'elemento corrente di un array
    • each — Restituisce la corrente coppia chiave/valore di un array e incrementa il puntatore dell'array
    • end — Sposta il puntatore interno dell'array all'ultimo elemento
    • extract — Importa le variabili nella tabella dei simboli
    • in_array — Controlla se un valore è presente in un array
    • key_exists — Alias di array_key_exists
    • key — Estrae la chiave corrente da un array associativo
    • krsort — Ordina rispetto alle chiavi di un array in ordine inverso
    • ksort — Ordina rispetto alle chiavi di un array
    • list — Assegna valori a delle variabili come se fossero un array
    • natcasesort — Ordina un array usando un algoritmo di "ordine naturale" non sensibile alle maiuscole/minuscole
    • natsort — Ordina un array usando un algoritmo di "ordine naturale"
    • next — Incrementa il puntatore interno dell'array
    • pos — Restituisce l'elemento corrente di un array
    • prev — Decrementa il puntatore interno dell'array
    • range — Crea un array contenente una serie di elementi
    • reset — Reimposta il puntatore interno di un array sulla posizione iniziale
    • rsort — Ordina un array in ordine decrescente
    • shuffle — Mescola un array
    • sizeof — Alias di count
    • sort — Ordina un array
    • uasort — Ordina un array mediante una funzione definita dall'utente e mantiene le associazioni
    • uksort — Ordina rispetto alle chiavi di un array mediante una funzione definita dall'utente
    • usort — Ordina un array mediante una funzione definita dall'utente


Informazioni su Classe/Oggetto


Introduzione

Queste funzioni permettono di ottenere informazioni sulle classi e sulle istanze degli oggetti. È possibile ottenere il nome della classe a cui appartiene un oggetto, così come le sue proprietà e i suoi metodi. Utilizzando queste funzioni, è possibile trovare non solo l'appartenenza di classe di un oggetto, ma anche la sua parentela (p.e. da quale classe si estende la classe dell'oggetto).

Per favore guarda la sezione Oggetti del manuale per una dettagliata spiegazione su come le classi e gli oggetti sono implementati e usati in PHP.



Installazione/Configurazione

Indice dei contenuti


Requisiti

Non sono necessarie librerie esterne per utilizzare questo modulo.



Installazione

Non è necessaria nessuna installazione per usare queste funzioni, esse fanno parte del core di PHP.



Configurazione di Runtime

Questa estensione non definisce alcuna direttiva di configurazione in php.ini



Tipi di risorse

Questa estensione non definisce alcun tipo di risorsa.




Costanti predefinite

Questa estensione non definisce alcuna costante.



Esempi

In this example, we first define a base class and an extension of the class. The base class describes a general vegetable, whether it is edible or not and what is its color. The subclass Spinach adds a method to cook it and another to find out if it is cooked.

Example #1 classes.inc

<?php

// base class with member properties and methods
class Vegetable {

   var 
$edible;
   var 
$color;

   function 
Vegetable($edible$color="green"
   {
       
$this->edible $edible;
       
$this->color $color;
   }

   function 
is_edible() 
   {
       return 
$this->edible;
   }

   function 
what_color() 
   {
       return 
$this->color;
   }
   
// end of class Vegetable

// extends the base class
class Spinach extends Vegetable {

   var 
$cooked false;

   function 
Spinach() 
   {
       
$this->Vegetable(true"green");
   }

   function 
cook_it() 
   {
       
$this->cooked true;
   }

   function 
is_cooked() 
   {
       return 
$this->cooked;
   }
   
// end of class Spinach

?>

We then instantiate 2 objects from these classes and print out information about them, including their class parentage. We also define some utility functions, mainly to have a nice printout of the variables.

Example #2 test_script.php

<pre>
<?php

include "classes.inc";

// utility functions

function print_vars($obj
{
foreach (
get_object_vars($obj) as $prop => $val) {
    echo 
"\t$prop = $val\n";
}
}

function 
print_methods($obj
{
$arr get_class_methods(get_class($obj));
foreach (
$arr as $method) {
    echo 
"\tfunction $method()\n";
}
}

function 
class_parentage($obj$class
{
if (
is_subclass_of($GLOBALS[$obj], $class)) {
    echo 
"Object $obj belongs to class " get_class($$obj);
    echo 
" a subclass of $class\n";
} else {
    echo 
"Object $obj does not belong to a subclass of $class\n";
}
}

// instantiate 2 objects

$veggie = new Vegetable(true"blue");
$leafy = new Spinach();

// print out information about objects
echo "veggie: CLASS " get_class($veggie) . "\n";
echo 
"leafy: CLASS " get_class($leafy);
echo 
", PARENT " get_parent_class($leafy) . "\n";

// show veggie properties
echo "\nveggie: Properties\n";
print_vars($veggie);

// and leafy methods
echo "\nleafy: Methods\n";
print_methods($leafy);

echo 
"\nParentage:\n";
class_parentage("leafy""Spinach");
class_parentage("leafy""Vegetable");
?>
</pre>

One important thing to note in the example above is that the object $leafy is an instance of the class Spinach which is a subclass of Vegetable, therefore the last part of the script above will output:

   [...]
Parentage:
Object leafy does not belong to a subclass of Spinach
Object leafy belongs to class spinach a subclass of Vegetable



Classes/Object Funzioni


__autoload

(PHP 5)

__autoloadAttempt to load undefined class

Descrizione

void __autoload ( string $class )

You can define this function to enable classes autoloading.

Elenco dei parametri

class

Name of the class to load

Valori restituiti

Nessun valore viene restituito.

Vedere anche:



call_user_method_array

(PHP 4 >= 4.0.5, PHP 5)

call_user_method_array Richiama il metodo dato con un array di parametri [deprecated]

Descrizione

mixed call_user_method_array ( string $nome_metodo , object &$obj , array $paramarr )
Avviso

A partire dalla versione 4.1.0 è sconsigliato l'uso di call_user_method_array(); in sostituzione utilizzare la serie di funzioni call_user_func_array() con sintassi array(&$obj, "method_name").

Richiama il metodo indicato da nome_metodo dell'oggetto oggetto, utilizzando i parametri forniti in array_parametri.

Vedere anche: call_user_func_array() e call_user_func().



call_user_method

(PHP 4, PHP 5)

call_user_method Chiama un metodo dell'oggetto indicato [deprecated]

Descrizione

mixed call_user_method ( string $nome_metodo , object &$obj [, mixed $parametro [, mixed $... ]] )
Avviso

A partire dalla versione 4.1.0 l'uso della funzione call_user_method() è sconsigliato; in sostituzione utilizzare la serie call_user_func() con la sintassi array(&$obj, "method_name").

Richiama il metodo indicato da nome_metodo dell'oggetto oggetto. Di seguito si fornisce un esempio di utilizzo. Qui si definisce una classe, si istanzia un oggetto, e si utilizza call_user_method() per richiamare il metodo stampa_info

<?php
class Stato {
    var 
$NOME;
    var 
$TLD;
    
    function 
Stato($nome$tld
    {
        
$this->NOME $nome;
        
$this->TLD $tld;
    }

    function 
stampa_info($prestr "") {
        echo 
$prestr "Stato: " $this->NOME "\n";
        echo 
$prestr "Dominio di primo livello: " $this->TLD "\n";
    }
}

$paese = new Stato("Peru""pe");

echo 
"* Richiamo il metodo direttamente\n";
$paese->stampa_info();

echo 
"\n* utilizzo dello stesso metodo in modo indiretto\n";
call_user_method("stampa_info"$paese"\t");
?>

Vedere anche call_user_func_array() e call_user_func().



class_alias

(PHP 5 >= 5.3.0)

class_aliasCreates an alias for a class

Descrizione

bool class_alias ( string $original , string $alias [, bool $autoload = TRUE ] )

Creates an alias named alias based on the user defined class original. The aliased class is exactly the same as the original class.

Elenco dei parametri

original

The original class.

alias

The alias name for the class.

autoload

Whether to autoload if the original class is not found.

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

Example #1 class_alias() example

<?php

class foo { }

class_alias('foo''bar');

$a = new foo;
$b = new bar;

// the objects are the same
var_dump($a == $b$a === $b);
var_dump($a instanceof $b);

// the classes are the same
var_dump($a instanceof foo);
var_dump($a instanceof bar);

var_dump($b instanceof foo);
var_dump($b instanceof bar);

?>

Il precedente esempio visualizzerà:

bool(true)
bool(false)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)

Vedere anche:

  • get_parent_class() - Restituisce il nome della classe genitrice di un oggetto o di una classe
  • is_subclass_of() - Restituisce TRUE se l'oggetto ha questa classe come uno dei suoi genitori



class_exists

(PHP 4, PHP 5)

class_existsVerifica se una classe è stata definita

Descrizione

bool class_exists ( string $nome_classe [, bool $autoload ] )

Questa funzione restituisce TRUE se la classe indicata dal parametro nome_classe è stata definita, altrimenti restituisce FALSE .

Example #1 Esempio di uso di class_exists()

<?php
// Verifica se la classe esiste prima di richiamarla
if (class_exists('MyClass')) {
    
$myclass = new MyClass();
}
 
?>

class_exists(), per default, tenta di eseguire __autoload, se non si desidera che class_exists() esegua __autoload(), impostare il parametro autoload a FALSE.

Example #2 Esempio di uso di autoload

<?php
function __autoload($class
{
    include(
$class '.php');
    
// Check to see it the include defined the class
    
if ( !class_exists($classfalse) ) {
        
trigger_error("Unable to load class $class"E_USER_ERROR);
       }

}
 
if( 
class_exists('MyClass') ) {
    
$myclass = new MyClass();
}
 
?>

Nota:

Il parametro autoload è stato aggiunto in PHP 5

Vedere anche interface_exists() e get_declared_classes().



get_called_class

(PHP 5 >= 5.3.0)

get_called_classthe "Late Static Binding" class name

Descrizione

string get_called_class ( void )

Gets the name of the class the static method is called in.

Valori restituiti

Returns the class name. Returns FALSE if called from outside a class.

Esempi

Example #1 Using get_called_class()

<?php

class foo {
    static public function 
test() {
        
var_dump(get_called_class());
    }
}

class 
bar extends foo {
}

foo::test();
bar::test();

?>

Il precedente esempio visualizzerà:

string(3) "foo"
string(3) "bar"

Vedere anche:

  • get_parent_class() - Restituisce il nome della classe genitrice di un oggetto o di una classe
  • get_class() - Restituisce il nome della classe di un oggetto
  • is_subclass_of() - Restituisce TRUE se l'oggetto ha questa classe come uno dei suoi genitori



get_class_methods

(PHP 4, PHP 5)

get_class_methodsRestituisce un array con i nomi dei metodi della classe

Descrizione

array get_class_methods ( string $nome_classe )

Questa funzione restituisce un array contenente i nomi dei metodi definiti per la classe specificata da nome_classe.

Nota:

Dalla versione 4.0.6 di PHP, si può specificare direttamente l'oggetto anziché la classe nel parametro nome_classe. Ad esempio:

<?php
$metodi_della_classe 
get_class_methods($mia_classe); // vedere di seguito l'esempio completo
?>

Example #1 Esempio di get_class_methods()

<?php

class miaclasse {
    
// costruttore
    
function miaclasse()
    {
        return(
true);
    }
    
    
// metodo 1
    
function funzione1() 
    {
        return(
true);
    }

    
// metodo 2
    
function funzione2() 
    {
        return(
true);
    }
}

$mio_oggetto = new miaclasse();

$metodi get_class_methods(get_class($mio_oggetto));

foreach (
$metodi as $nome_metodo) {
    echo 
"$nome_metodo\n";
}

?>

Il precedente esempio visualizzerà:

miaclasse
funzione1
funzione2

Avviso

Dal PHP 5, questa funzione restituisce il nome dei metodi così come sono dichiarati (sensibile alle maiuscole). In PHP 4 erano restituiti in minuscolo.

Vedere anche get_class_vars() e get_object_vars()



get_class_vars

(PHP 4, PHP 5)

get_class_vars Restituisce un array con le proprietà di default della classe

Descrizione

array get_class_vars ( string $nome_classe )

Questa funzione restituisce un array associativo contenente le proprietà di default pubbliche della classe. Gli elementi dell'array prodotto sono nel formato nomevariabile => valore.

Nota:

Nelle verioni di PHP precedenti alla 4.2.0, le variabili della classe non inizializzate non sono elencate da get_class_vars().

Example #1 get_class_vars() esempio

<?php

class miaclasse {

    var 
$var1// questa variabile non ha un valore di default...
    
var $var2 "xyz";
    var 
$var3 100;
    private 
$var4// PHP 5
    // costruttore
    
function miaclasse() {
        
// Modifico qualche proprietà
        
$this->var1 "foo"
        
$this->var2 "bar";
        return(
true);
    }

}

$mia_classe = new miaclasse();

$variabili get_class_vars(get_class($mia_classe));

foreach (
$variabili as $nome => $valore) {
    echo 
"$nome : $valore\n";
}

?>

Il precedente esempio visualizzerà:

// Versioni di PHP antecedenti alla 4.2.0
var2 : xyz
var3 : 100

// Dalla versione 4.2.0
var1:
var2 : xyz
var3 : 100

Vedere anche get_class_methods() e get_object_vars()



get_class

(PHP 4, PHP 5)

get_classRestituisce il nome della classe di un oggetto

Descrizione

string get_class ( object $oggetto )

Questa funzione restituisce il nome della classe di cui l'oggetto oggetto è un'istanza. Restituisce FALSE se oggetto non è un oggetto.

Nota: Le classi definite nei moduli di PHP sono restituite nella notazione originale. In PHP 4, get_class() restituisce il nome delle classi definite dagli utenti in minuscolo, mentre in PHP 5 i nomi delle classi saranno restituiti nella notazione originale, come i nomi delle classi nei moduli.

Example #1 Utilizzo di get_class()

<?php

class foo 
    
{
    function 
foo() {
    
// qualche istruzione
    
}

    function 
name() 
    {
        echo 
"Nome della classe: " get_class($this) , "\n";
    }
}

// creo un oggetto
$bar = new foo();

// chiamata dall'esterno
echo "Il suo nome è: " get_class($bar) , "\n";

// chiamata dall'interno
$bar->name();

?>

Il precedente esempio visualizzerà:

Il suo nome è: foo
Nome della classe:  foo

Vedere anche get_parent_class(), gettype() e is_subclass_of()



get_declared_classes

(PHP 4, PHP 5)

get_declared_classesRestituisce un array con il nome delle classi definite

Descrizione

array get_declared_classes ( void )

Questa funzione restituisce un array con i nomi delle classi definite all'interno dello script corrente.

Nota:

Nella versione 4.0.1pl2 di PHP, in testa all'array erano indicate tre ulteriori classi: stdClass (definita in Zend/zend.c), OverloadedTestClass (definita in ext/standard/basic_functions.c) e Directory (definita in ext/standard/dir.c).

Occorre notare che, in base a quali librerie sono state compilate in PHP, possono essere rilevate ulteriori classi. Questo significa, anche, che non si potranno definire delle classi con questi nomi. Un'elenco delle classi predefinite è nella sezione Predefined Classes dell'appendice.

Example #1 Esempio di uso di get_declared_classes()

<?php
print_r
(get_declared_classes());
?>

Il precedente esempio visualizzerà qualcosa simile a:

Array
(
    [0] => stdClass
    [1] => __PHP_Incomplete_Class
    [2] => Directory
)

Vedere anche class_exists() e get_declared_interfaces().



get_declared_interfaces

(PHP 5)

get_declared_interfacesReturns an array of all declared interfaces

Descrizione

array get_declared_interfaces ( void )

Gets the declared interfaces.

Valori restituiti

Returns an array of the names of the declared interfaces in the current script.

Esempi

Example #1 get_declared_interfaces() example

<?php
print_r
(get_declared_interfaces());
?>

Il precedente esempio visualizzerà qualcosa simile a:

Array
(
    [0] => Traversable
    [1] => IteratorAggregate
    [2] => Iterator
    [3] => ArrayAccess
    [4] => reflector
    [5] => RecursiveIterator
    [6] => SeekableIterator
)

Vedere anche:



get_declared_traits

(PHP 5 >= 5.4.0)

get_declared_traitsReturns an array of all declared traits

Descrizione

array get_declared_traits ( void )

Elenco dei parametri

Questa funzione non contiene parametri.

Valori restituiti

Returns an array with names of all declared traits in values. Returns NULL in case of a failure.

Vedere anche:



get_object_vars

(PHP 4, PHP 5)

get_object_varsRestituisce un array associativo con le proprietà dell'oggetto

Descrizione

array get_object_vars ( object $oggetto )

Questa funzione restituisce un array associativo con le proprietà definite nell'oggetto passato nel parametro oggetto .

Nota:

Nelle versioni di PHP precedenti la 4.2.0, le eventuali variabili dichiarate in nella classe oggetto ma non ancora valorizzate non saranno restituite nell'array. Nelle versioni successive alla 4.2.0, saranno restituite nell'array con valore NULL.

Example #1 Utilizzo di get_object_vars()

<?php
class Point2D {
    var 
$x$y;
    var 
$etichetta;

    function 
Point2D($x$y
    {
        
$this->$x;
        
$this->$y;
    }

    function 
setetichetta($etichetta
    {
        
$this->etichetta $etichetta;
    }

    function 
getPoint() 
    {
        return array(
"x" => $this->x,
                     
"y" => $this->y,
                     
"etichetta" => $this->etichetta);
    }
}

// "$etichetta" è dichiarata ma non definita
$p1 = new Point2D(1.2333.445);
print_r(get_object_vars($p1));

$p1->setetichetta("point #1");
print_r(get_object_vars($p1));

?>

Il precedente esempio visualizzerà:

 
Array 
( 
     [x] => 1.233 
     [y] => 3.445 
     [label] =>
) 
    
Array 
( 
     [x] => 1.233 
     [y] => 3.445 
     [label] => point #1 
) 

Vedere anche get_class_methods() e get_class_vars().



get_parent_class

(PHP 4, PHP 5)

get_parent_classRestituisce il nome della classe genitrice di un oggetto o di una classe

Descrizione

string get_parent_class ( mixed $oggetto )

Se oggetto è un oggetto, la funzione restituisce il nome del genitore della classe di cui oggetto è un'istanza.

Se oggetto è una stringa, la funzione restituisce il nome della classe genitrice della classe di cui oggetto indica il nome. Questa funzionalità è stata aggiunta nella versione 4.0.5 di PHP.

Example #1 Utilizzo di get_parent_class()

<?php

class dad {
    function 
dad() 
    {
    
// Qualche istruzione
    
}
}

class 
child extends dad {
    function 
child() 
    {
        echo 
"Io sono figlio di " get_parent_class($this) , "\n";
    }
}

class 
child2 extends dad {
    function 
child2() 
    {
        echo 
"Pure io sono figlio di " get_parent_class('child2') , "\n";
    }
}

$foo = new child();
$bar = new child2();

?>

Il precedente esempio visualizzerà:

Io sono figlio di dad
Pure io sono figlio di dad

Vedere anche get_class(), is_subclass_of()



interface_exists

(PHP 5 >= 5.0.2)

interface_existsChecks if the interface has been defined

Descrizione

bool interface_exists ( string $interface_name [, bool $autoload = true ] )

Checks if the given interface has been defined.

Elenco dei parametri

interface_name

The interface name

autoload

Whether to call __autoload or not by default.

Valori restituiti

Returns TRUE if the interface given by interface_name has been defined, FALSE otherwise.

Esempi

Example #1 interface_exists() example

<?php
// Check the interface exists before trying to use it
if (interface_exists('MyInterface')) {
    class 
MyClass implements MyInterface
    
{
        
// Methods
    
}
}

?>

Vedere anche:



is_a

(PHP 4 >= 4.2.0, PHP 5)

is_a Restituisce TRUE se l'oggetto appartiene a questa classe o se ha questa classe tra i suoi genitori

Descrizione

bool is_a ( object $object , string $class_name )

Questa funzione restituisce TRUE appartiene a questa classe oppure ha questa classe tra i suoi genitori, FALSE in caso diverso.

Example #1 Esempio di uso di is_a()

<?php
// Definisce una classe 
class WidgetFactory
{
  var 
$oink 'moo';
}
 
// crea un nuovo oggetto
$WF = new WidgetFactory();
 
if (
is_a($WF'WidgetFactory')) {
  echo 
"yes, \$WF is still a WidgetFactory\n";
}
?>

In PHP 5 la funzione is_a() è sconsigliata in favore di instanceof. L'esempio precedente, in PHP 5, può essere riscritto come:

Example #2 Utilizzo dell'operatore instanceof in PHP 5

<?php
if ($WF instanceof WidgetFactory) {
    echo 
'Yes, $WF is a WidgetFactory';
}
?>

Vedere anche get_class(), get_parent_class() e is_subclass_of().



is_subclass_of

(PHP 4, PHP 5)

is_subclass_of Restituisce TRUE se l'oggetto ha questa classe come uno dei suoi genitori

Descrizione

bool is_subclass_of ( mixed $oggetto , string $nome_classe )

Questa funzione restituisce TRUE se obj, appartiene ad una sottoclasse di nome_classe, altrimenti FALSE.

Nota:

Dal PHP 5.0.3 si può specificare il parametro oggetto come stringa (il nome della classe).

Example #1 Esempio di uso di is_subclass_of()

<?php
// definisce una classe
class WidgetFactory
{
  var 
$oink 'moo';
}
 
// definisce una classe figlio
class WidgetFactory_Child extends WidgetFactory
{
  var 
$oink 'oink';
}
 
// crea un nuovo oggetto
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();
 
if (
is_subclass_of($WFC'WidgetFactory')) {
  echo 
"yes, \$WFC is a subclass of WidgetFactory\n";
} else {
  echo 
"no, \$WFC is not a subclass of WidgetFactory\n";
}
 
if (
is_subclass_of($WF'WidgetFactory')) {
  echo 
"yes, \$WF is a subclass of WidgetFactory\n";
} else {
  echo 
"no, \$WF is not a subclass of WidgetFactory\n";
}
// utilizzabile dal PHP 5.0.3
if (is_subclass_of('WidgetFactory_Child''WidgetFactory')) {
  echo 
"yes, WidgetFactory_Child is a subclass of WidgetFactory\n";
} else {
  echo 
"no, WidgetFactory_Child is not a subclass of WidgetFactory\n";
}
?>

Il precedente esempio visualizzerà:

yes, $WFC is a subclass of WidgetFactory
no, $WF is not a subclass of WidgetFactory
yes, WidgetFactory_Child is a subclass of WidgetFactory

Vedere anche get_class(), get_parent_class() e is_a().



method_exists

(PHP 4, PHP 5)

method_existsVerifica se il metodo esiste nella classe

Descrizione

bool method_exists ( object $object , string $nome_metodo )

Questa funzione restituisce TRUE se il metodo indicato dal parametro nome_metodo è stato nell'oggetto indicato da oggetto, altrimenti FALSE.

Example #1 Esempio di uso di method_exists()

<?php
$directory 
= new Directory('.');
var_dump(method_exists($directory,'read'));
?>

Il precedente esempio visualizzerà:

bool(true)



property_exists

(PHP 5 >= 5.1.0)

property_exists Checks if the object or class has a property

Descrizione

bool property_exists ( mixed $class , string $property )

This function checks if the given property exists in the specified class.

Nota:

As opposed with isset(), property_exists() returns TRUE even if the property has the value NULL.

Elenco dei parametri

class

The class name or an object of the class to test for

property

The name of the property

Valori restituiti

Returns TRUE if the property exists, FALSE if it doesn't exist or NULL in case of an error.

Note

Nota:

L'utilizzo di questa funzione attiverà tutti gli autoloaders se la classe non è già conosciuta.

Nota:

The property_exists() function cannot detect properties that are magically accessible using the __get magic method.

Log delle modifiche

Versione Descrizione
5.3.0 This function checks the existence of a property independent of accessibility.

Esempi

Example #1 A property_exists() example

<?php

class myClass {
    public 
$mine;
    private 
$xpto;
    static protected 
$test;

    static function 
test() {
        
var_dump(property_exists('myClass''xpto')); //true
    
}
}

var_dump(property_exists('myClass''mine'));   //true
var_dump(property_exists(new myClass'mine')); //true
var_dump(property_exists('myClass''xpto'));   //true, as of PHP 5.3.0
var_dump(property_exists('myClass''bar'));    //false
var_dump(property_exists('myClass''test'));   //true, as of PHP 5.3.0
myClass::test();

?>

Vedere anche:



trait_exists

(PHP 5 >= 5.4.0)

trait_existsChecks if the trait exists

Descrizione

bool trait_exists ( string $traitname [, bool $autoload ] )

Elenco dei parametri

traitname

Name of the trait to check

autoload

Whether to autoload if not already loaded.

Valori restituiti

Returns TRUE if trait exists, FALSE if not, NULL in case of an error.


Indice dei contenuti




Classkit


Introduzione

These functions allow the dynamic manipulation of PHP classes, at runtime.

Nota:

This extension has been replaced by runkit, which is not limited to class manipulation but has function manipulation, as well.



Installazione/Configurazione

Indice dei contenuti


Requisiti

Non sono necessarie librerie esterne per utilizzare questo modulo.



Installazione

Questa estensione è considerata non mantenuta e morta. Tuttavia, il codice sorgente per questa estensione è ancora disponibile all'interno di PECL SVN qui: » http://svn.php.net/viewvc/pecl/classkit.



Configurazione di Runtime

Questa estensione non definisce alcuna direttiva di configurazione in php.ini



Tipi di risorse

Questa estensione non definisce alcun tipo di risorsa.




Costanti predefinite

Queste costanti sono definite da questa estensione e sono disponibili solo se l'estensione è stata compilata nel PHP o se è stata caricata dinamicamente a runtime.

CLASSKIT_ACC_PRIVATE (int)
Marks the method private
CLASSKIT_ACC_PROTECTED (int)
Marks the method protected
CLASSKIT_ACC_PUBLIC (int)
Marks the method public



Classkit Funzioni


classkit_import

(PECL classkit >= 0.3)

classkit_importImport new class method definitions from a file

Descrizione

array classkit_import ( string $filename )

Nota: Questa funzione non può essere usata per manipolare il metodo attualmente in esecuzione (o concatenato).

Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

Elenco dei parametri

filename

The filename of the class method definitions to import

Valori restituiti

Associative array of imported methods

Esempi

Example #1 classkit_import() example

<?php
// file: newclass.php
class Example {
    function 
foo() {
        return 
"bar!\n";
    }
}
?>
<?php
// requires newclass.php (see above)
class Example {
    function 
foo() {
        return 
"foo!\n";
    }
}

$e = new Example();

// output original
echo $e->foo();

// import replacement method
classkit_import('newclass.php');

// output imported
echo $e->foo();

?>

Il precedente esempio visualizzerà:

foo!
bar!

Vedere anche:



classkit_method_add

(PECL classkit >= 0.1)

classkit_method_addDynamically adds a new method to a given class

Descrizione

bool classkit_method_add ( string $classname , string $methodname , string $args , string $code [, int $flags = CLASSKIT_ACC_PUBLIC ] )
Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

Elenco dei parametri

classname

The class to which this method will be added

methodname

The name of the method to add

args

Comma-delimited list of arguments for the newly-created method

code

The code to be evaluated when methodname is called

flags

The type of method to create, can be CLASSKIT_ACC_PUBLIC, CLASSKIT_ACC_PROTECTED or CLASSKIT_ACC_PRIVATE

Nota:

This parameter is only used as of PHP 5, because, prior to this, all methods were public.

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

Example #1 classkit_method_add() example

<?php
class Example {
    function 
foo() {
        echo 
"foo!\n";
    }
}

// create an Example object
$e = new Example();

// Add a new public method
classkit_method_add(
    
'Example',
    
'add',
    
'$num1, $num2',
    
'return $num1 + $num2;',
    
CLASSKIT_ACC_PUBLIC
);

// add 12 + 4
echo $e->add(124);
?>

Il precedente esempio visualizzerà:

16

Vedere anche:



classkit_method_copy

(PECL classkit >= 0.2)

classkit_method_copyCopies a method from class to another

Descrizione

bool classkit_method_copy ( string $dClass , string $dMethod , string $sClass [, string $sMethod ] )
Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

Elenco dei parametri

dClass

Destination class for copied method

dMethod

Destination method name

sClass

Source class of the method to copy

sMethod

Name of the method to copy from the source class. If this parameter is omitted, the value of dMethod is assumed.

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

Example #1 classkit_method_copy() example

<?php
class Foo {
    function 
example() {
        return 
"foo!\n";
    }
}

class 
Bar {
    
// initially, no methods
}

// copy the example() method from the Foo class to the Bar class, as baz()
classkit_method_copy('Bar''baz''Foo''example');

// output copied function
echo Bar::baz();
?>

Il precedente esempio visualizzerà:

foo!

Vedere anche:



classkit_method_redefine

(PECL classkit >= 0.1)

classkit_method_redefineDynamically changes the code of the given method

Descrizione

bool classkit_method_redefine ( string $classname , string $methodname , string $args , string $code [, int $flags = CLASSKIT_ACC_PUBLIC ] )

Nota: Questa funzione non può essere usata per manipolare il metodo attualmente in esecuzione (o concatenato).

Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

Elenco dei parametri

classname

The class in which to redefine the method

methodname

The name of the method to redefine

args

Comma-delimited list of arguments for the redefined method

code

The new code to be evaluated when methodname is called

flags

The redefined method can be CLASSKIT_ACC_PUBLIC, CLASSKIT_ACC_PROTECTED or CLASSKIT_ACC_PRIVATE

Nota:

This parameter is only used as of PHP 5, because, prior to this, all methods were public.

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

Example #1 classkit_method_redefine() example

<?php
class Example {
    function 
foo() {
        return 
"foo!\n";
    }
}

// create an Example object
$e = new Example();

// output Example::foo() (before redefine)
echo "Before: " $e->foo();

// Redefine the 'foo' method
classkit_method_redefine(
    
'Example',
    
'foo',
    
'',
    
'return "bar!\n";',
    
CLASSKIT_ACC_PUBLIC
);

// output Example::foo() (after redefine)
echo "After: " $e->foo();
?>

Il precedente esempio visualizzerà:

Before: foo!
After: bar!

Vedere anche:



classkit_method_remove

(PECL classkit >= 0.1)

classkit_method_removeDynamically removes the given method

Descrizione

bool classkit_method_remove ( string $classname , string $methodname )

Nota: Questa funzione non può essere usata per manipolare il metodo attualmente in esecuzione (o concatenato).

Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

Elenco dei parametri

classname

The class in which to remove the method

methodname

The name of the method to remove

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

Example #1 classkit_method_remove() example

<?php
class Example {
    function 
foo() {
        return 
"foo!\n";
    }
    
    function 
bar() {
        return 
"bar!\n";
    }
}

// Remove the 'foo' method
classkit_method_remove(
    
'Example',
    
'foo'
);

echo 
implode(' 'get_class_methods('Example'));

?>

Il precedente esempio visualizzerà:

bar

Vedere anche:



classkit_method_rename

(PECL classkit >= 0.1)

classkit_method_renameDynamically changes the name of the given method

Descrizione

bool classkit_method_rename ( string $classname , string $methodname , string $newname )

Nota: Questa funzione non può essere usata per manipolare il metodo attualmente in esecuzione (o concatenato).

Avviso

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.

Elenco dei parametri

classname

The class in which to rename the method

methodname

The name of the method to rename

newname

The new name to give to the renamed method

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

Example #1 classkit_method_rename() example

<?php
class Example {
    function 
foo() {
        return 
"foo!\n";
    }
}

// Rename the 'foo' method to 'bar'
classkit_method_rename(
    
'Example',
    
'foo',
    
'bar'
);

// output renamed function
echo Example::bar();
?>

Il precedente esempio visualizzerà:

foo!

Vedere anche:


Indice dei contenuti




Controllo del tipo di carattere


Introduzione

Le funzioni fornite da questa estensione controllano che un carattere o una stringa siano conformi ad una determinata classe di caratteri a seconda della localizzazione corrente (vedi anche setlocale()).

Quando queste funzioni vengono chiamate con un numero intero come argomento si comportano esattamente come le loro controparti C da ctype.h. Ciò significa che passando un intero minore di 256 verrà utilizzato il carattere ASCII corrispondente per verificare che si adatti al range specificato (le cifre sono tra 0x30 e 0x39). Se il numero è compreso tra -128 e -1, inclusi, verrà aggiunto 256 e il controllo verrà fatto su di esso.

Quando viene passata una stringa come argomento verrà controllato qualunque carattere contenuto in essa e verrà restituito TRUE solo se ogni carattere è conforme ai criteri richiesti. Quanto viene passata una stringa vuota il risultato sarà sempre TRUE in PHP < 5.1 e FALSE dalla 5.1.

Se viene passata qualunque variabile che non sia una stringa o un intero la funzione restituirà FALSE immediatamente.

Va notato che è preferibile usare le funzioni ctype invece che le espressioni regolari e alle funzioni "str_*" e "is_*" equivalenti. Questo perché ctype usa una libreria C nativa e risulta quindi significativamente più veloce.

Nota:

Queste funzioni non sono correlate affatto alla libreria "ctypes" di Python. L'estensione del nome deriva dal file header C ctype.h che sono definite equivalenti.

Questa estensione è anche anteriore al "ctypes" di Python e quindi ogni confusione causata da questo nome non è certo colpa nostra ...



Installazione/Configurazione

Indice dei contenuti


Requisiti

Nessuno eccetto le funzioni della libreria C standard che sono sempre disponibili.



Installazione

A partire da PHP 4.2.0 queste funzioni sono abilitate di default. Per le versioni più vecchie bisogna configurare e compilare PHP con --enable-ctype .

La versione per Windows di PHP ha già compilato il supporto per questo modulo. Non occorre caricare alcun modulo addizionale per potere utilizzare queste funzioni.

Nota: Il supporto per CType pre-compilato è disponibile a partire dalla versione 4.3.0.



Configurazione di Runtime

Questa estensione non definisce alcuna direttiva di configurazione in php.ini



Tipi di risorse

Questa estensione non definisce alcun tipo di risorsa.




Costanti predefinite

Questa estensione non definisce alcuna costante.



Funzioni Ctype


ctype_alnum

(PHP 4 >= 4.0.4, PHP 5)

ctype_alnumControlla i caratteri alfanumerici

Descrizione

bool ctype_alnum ( string $testo )

Restituisce TRUE se ogni carattere di testo è una lettera o una cifra, FALSE in caso contrario. Nell'ambiente standard del C le lettere sono solamente [A-Za-z] e la funzione è equivalente a preg_match('/^[a-z0-9]*$/i', $text).

Example #1 Esempio di uso di ctype_alnum() (utilizzando le impostazioni locali di default)

<?php
$strings 
= array('AbCd1zyZ9''foo!#$bar');
foreach (
$strings as $testcase) {
    if (
ctype_alnum($testcase)) {
        echo 
"The string $testcase consists of all letters or digits.\n";
    } else {
        echo 
"The string $testcase does not consist of all letters or digits.\n";
    }
}
?>

Questo esempio visualizzerà :

The string AbCd1zyZ9 consists of all letters or digits.
The string foo!#$bar does not consists of all letters or digits.

Vedere anche ctype_alpha(), ctype_digit() e setlocale().



ctype_alpha

(PHP 4 >= 4.0.4, PHP 5)

ctype_alphaControlla i caratteri alfabetici

Descrizione

bool ctype_alpha ( string $testo )

Restituisce TRUE se ogni carattere di testo è una lettera dell'ambiente corrente, FALSE in caso contrario. Nell'ambiente standard del C le lettere sono solo [A-Za-z] e ctype_alpha() è equivalente a (ctype_upper($text) || ctype_lower($text)), se $text è di un singolo carattere, ma altri linguaggi hanno lettere che non sono considerate nè maiuscole nè minuscole.

Example #1 Esempio di uso di ctype_alpha() (utilizzando le impostazioni locali di default)

<?php
$strings 
= array('KjgWZC''arf12');
foreach (
$strings as $testcase) {
    if (
ctype_alpha($testcase)) {
        echo 
"The string $testcase consists of all letters.\n";
    } else {
        echo 
"The string $testcase does not consist of all letters.\n";
    }
}
?>

This example will output :

The string KjgWZC consists of all letters.
The string arf12 does not consists of all letters.

Vedere anche ctype_upper(), ctype_lower() e setlocale().



ctype_cntrl

(PHP 4 >= 4.0.4, PHP 5)

ctype_cntrlControlla i caratteri di controllo

Descrizione

bool ctype_cntrl ( string $testo )

Restituisce TRUE se ogni carattere di testo ha una speciale funzione di controllo, FALSE in caso contrario. I caratteri di controllo sono per esempio line feed (avanza di una riga), tab, esc.

Example #1 Esempio di uso di ctype_cntrl()

<?php
$strings 
= array('string1' => "\n\r\t"'string2' => 'arf12');
foreach (
$strings as $name => $testcase) {
    if (
ctype_cntrl($testcase)) {
        echo 
"The string '$name' consists of all control characters.\n";
    } else {
        echo 
"The string '$name' does not consist of all control characters.\n";
    }
}
?>

L'esempio visualizzerà :

The string 'string1' consists of all control characters.
The string 'string2' does not consists of all control characters.



ctype_digit

(PHP 4 >= 4.0.4, PHP 5)

ctype_digitControlla i caratteri numerici

Descrizione

bool ctype_digit ( string $testo )

Restituisce TRUE se ogni carattere di testo è una cifra decimale, FALSE in caso contrario.

Example #1 Esempio di uso di ctype_digit()

<?php
$strings 
= array('1820.20''10002''wsl!12');
foreach (
$strings as $testcase) {
    if (
ctype_digit($testcase)) {
        echo 
"The string $testcase consists of all digits.\n";
    } else {
        echo 
"The string $testcase does not consist of all digits.\n";
    }
}
?>

Questo esempio visualizzerà :

The string 1820.20 does not consists of all digits.
The string 10002 consists of all digits.
The string wsl!12 does not consists of all digits.

Vedere anche ctype_alnum() e ctype_xdigit().



ctype_graph

(PHP 4 >= 4.0.4, PHP 5)

ctype_graphControlla ogni carattere stampabile tranne lo spazio

Descrizione

bool ctype_graph ( string $testo )

Restituisce TRUE se ogni carattere di testo è stampabile e crea un output realmente visibile (senza spazi bianchi), FALSE in caso contrario.

Example #1 Esempio di uso di ctype_graph()

<?php
$strings 
= array('string1' => "asdf\n\r\t"'string2' => 'arf12''string3' => 'LKA#@%.54');
foreach (
$strings as $name => $testcase) {
    if (
ctype_graph($testcase)) {
        echo 
"The string '$name' consists of all (visibly) printable characters.\n";
    } else {
        echo 
"The string '$name' does not consist of all (visibly) printable characters.\n";
    }
}
?>

Questo esempio visualizzerà :

The string 'string1' does not consist of all (visibly) printable characters.
The string 'string2' consists of all (visibly) printable characters.
The string 'string3' consists of all (visibly) printable characters.

Vedere anche ctype_alnum(), ctype_print() e ctype_punct().



ctype_lower

(PHP 4 >= 4.0.4, PHP 5)

ctype_lowerControlla i caratteri minuscoli

Descrizione

bool ctype_lower ( string $testo )

Restituisce TRUE se ogni carattere di testo è una lettera minuscola nell'ambiente corrente.

Example #1 Esempio di uso di ctype_lower() (utilizzando le impostazioni locali di default)

<?php
$strings 
= array('aac123''qiutoas''QASsdks');
foreach (
$strings as $testcase) {
    if (
ctype_lower($testcase)) {
        echo 
"The string $testcase consists of all lowercase letters.\n";
    } else {
        echo 
"The string $testcase does not consist of all lowercase letters.\n";
    }
}
?>

Questo esempio visualizzerà :

The string aac123 does not consist of all lowercase letters.
The string qiutoas consists of all lowercase letters.
The string QASsdks does not consist of all lowercase letters.

Vedere anche ctype_alpha(), ctype_upper() e setlocale().



ctype_print

(PHP 4 >= 4.0.4, PHP 5)

ctype_printControlla i caratteri stampabili

Descrizione

bool ctype_print ( string $testo )

Restituisce TRUE se ogni carattere di testo creerà veramente un output (compresi gli spazi). Restituisce FALSE se testo contiene dei caratteri di controllo o caratteri che non hanno nessun output o che non hanno per niente una funzione di controllo.

Example #1 Esempio di uso di ctype_print()

<?php
$strings 
= array('string1' => "asdf\n\r\t"'string2' => 'arf12''string3' => 'LKA#@%.54');
foreach (
$strings as $name => $testcase) {
    if (
ctype_print($testcase)) {
        echo 
"The string '$name' consists of all printable characters.\n";
    } else {
        echo 
"The string '$name' does not consist of all printable characters.\n";
    }
}
?>

Questo esempio visualizzerà :

The string 'string1' does not consist of all printable characters.
The string 'string2' consists of all printable characters.
The string 'string3' consists of all printable characters.

Vedere anche ctype_cntrl(), ctype_graph() e ctype_punct().



ctype_punct

(PHP 4 >= 4.0.4, PHP 5)

ctype_punct Controlla ogni carattere stampabile che non è uno spazio o un carattere alfanumerico

Descrizione

bool ctype_punct ( string $testo )

Restituisce TRUE se ogni carattere di testo è stampabile, ma non è nè una lettera nè; una cifra nè uno spazio, FALSE in caso contrario.

Example #1 Esempio di uso di ctype_punct()

<?php
$strings 
= array('ABasdk!@!$#''!@ # $''*&$()');
foreach (
$strings as $testcase) {
    if (
ctype_punct($testcase)) {
        echo 
"The string $testcase consists of all punctuation.\n";
    } else {
        echo 
"The string $testcase does not consist of all punctuation.\n";
    }
}
?>

Questo esempio visualizzerà :

The string ABasdk!@!$# does not consist of all punctuation.
The string !@ # $ does not consist of all punctuation.
The string *&$() consists of all punctuation.

Vedere anche ctype_cntrl() e ctype_graph().



ctype_space

(PHP 4 >= 4.0.4, PHP 5)

ctype_spaceControlla gli spazi

Descrizione

bool ctype_space ( string $testo )

Restituisce TRUE se ogni carattere di testo crea qualche tipo di spazio, FALSE in caso contrario. Oltre allo spazio questo include anche tab, tab verticale, line feed (avanza di una riga), carriage return (a capo) e form feed (avanza di un modulo).

Example #1 Esempio di uso di ctype_space()

<?php
$strings 
= array('string1' => "\n\r\t"'string2' => "\narf12"'string3' => '\n\r\t');
foreach (
$strings as $name => $testcase) {
    if (
ctype_space($testcase)) {
        echo 
"The string '$name' consists of all whitespace characters.\n";
    } else {
        echo 
"The string '$name' does not consist of all whitespace characters.\n";
    }
}
?>

Questo esempio visualizzerà :

The string 'string1' consists of all whitespace characters.
The string 'string2' does not consist of all whitespace characters.
The string 'string3' does not consist of all whitespace characters.

Vedere anche ctype_cntrl(), ctype_graph() e ctype_punct().



ctype_upper

(PHP 4 >= 4.0.4, PHP 5)

ctype_upperControlla i caratteri maiuscoli

Descrizione

bool ctype_upper ( string $testo )

Restituisce TRUE se ogni carattere di testo è una lettera maiuscola nell'ambiente corrente.

Example #1 Esempio di uso di ctype_upper() (utilizzando le impostazioni locali di default)

<?php
$strings 
= array('AKLWC139''LMNSDO''akwSKWsm');
foreach (
$strings as $testcase) {
    if (
ctype_upper($testcase)) {
        echo 
"The string $testcase consists of all uppercase letters.\n";
    } else {
        echo 
"The string $testcase does not consist of all uppercase letters.\n";
    }
}
?>

Questo esempio visualizzerà :

The string AKLWC139 does not consist of all uppercase letters.
The string LMNSDO consists of all uppercase letters.
The string akwSKWsm does not consist of all uppercase letters.

Vedere anche ctype_alpha(), ctype_lower(), e setlocale().



ctype_xdigit

(PHP 4 >= 4.0.4, PHP 5)

ctype_xdigit Controlla i caratteri che rappresentano una cifra esadecimale

Descrizione

bool ctype_xdigit ( string $testo )

Restituisce TRUE se ogni carattere di testo è una 'cifra' esadecimale, cioè una cifra decimale o un carattere fra [A-Fa-f] , FALSE in caso contrario.

Example #1 Esempio di uso di ctype_xdigit()

<?php
$strings 
= array('AB10BC99''AR1012''ab12bc99');
foreach (
$strings as $testcase) {
    if (
ctype_xdigit($testcase)) {
        echo 
"The string $testcase consists of all hexadecimal digits.\n";
    } else {
        echo 
"The string $testcase does not consist of all hexadecimal digits.\n";
    }
}
?>

Questo esempio visualizzerà :

The string AB10BC99 consists of all hexadecimal digits.
The string AR1012 does not consist of all hexadecimal digits.
The string ab12bc99 consists of all hexadecimal digits.

Vedere anche ctype_digit().


Indice dei contenuti

  • ctype_alnum — Controlla i caratteri alfanumerici
  • ctype_alpha — Controlla i caratteri alfabetici
  • ctype_cntrl — Controlla i caratteri di controllo
  • ctype_digit — Controlla i caratteri numerici
  • ctype_graph — Controlla ogni carattere stampabile tranne lo spazio
  • ctype_lower — Controlla i caratteri minuscoli
  • ctype_print — Controlla i caratteri stampabili
  • ctype_punct — Controlla ogni carattere stampabile che non è uno spazio o un carattere alfanumerico
  • ctype_space — Controlla gli spazi
  • ctype_upper — Controlla i caratteri maiuscoli
  • ctype_xdigit — Controlla i caratteri che rappresentano una cifra esadecimale



Data Filtering


Introduzione

This extension filters data by either validating or sanitizing it. This is especially useful when the data source contains unknown (or foreign) data, like user supplied input. For example, this data may come from an HTML form.

There are two main types of filtering: validation and sanitization.

Validation is used to validate or check if the data meets certain qualifications. For example, passing in FILTER_VALIDATE_EMAIL will determine if the data is a valid email address, but will not change the data itself.

Sanitization will sanitize the data, so it may alter it by removing undesired characters. For example, passing in FILTER_SANITIZE_EMAIL will remove characters that are inappropriate for an email address to contain. That said, it does not validate the data.

Flags are optionally used with both validation and sanitization to tweak behaviour according to need. For example, passing in FILTER_FLAG_PATH_REQUIRED while filtering an URL will require a path (like /foo in http://example.org/foo) to be present.



Installazione/Configurazione

Indice dei contenuti


Requisiti

Non sono necessarie librerie esterne per utilizzare questo modulo.



Installazione

The filter extension is enabled by default as of PHP 5.2.0. Before this time an experimental PECL extension was used, however, the PECL version is no longer recommended or updated.



Configurazione di Runtime

Il comportamento di queste funzioni è influenzato dalle impostazioni di php.ini.

Filter Configuration Options
Nome Default Modificabile Storico dei cambiamenti
filter.default "unsafe_raw" PHP_INI_PERDIR PHP_INI_ALL in filter <= 0.9.4. Available since PHP 5.2.0.
filter.default_flags NULL PHP_INI_PERDIR PHP_INI_ALL in filter <= 0.9.4. Available since PHP 5.2.0.
Per maggiori dettagli e definizioni sui modi PHP_INI_*, vedere Where a configuration setting may be set.

Breve descrizione dei parametri di configurazione.

filter.default string

Filter all $_GET, $_POST, $_COOKIE, $_REQUEST and $_SERVER data by this filter. Original data can be accessed through filter_input().

Accepts the name of the filter you like to use by default. See the existing filter list for the list of the filter names.

Nota:

Be careful about the default flags for the default filters. You should explicitly set them to the value you want. For example, to configure the default filter to behave exactly like htmlspecialchars() you need to set them default flags to 0 as shown below.

Example #1 Configuring the default filter to act like htmlspecialchars

filter.default = full_special_chars
filter.default_flags = 0

filter.default_flags integer

Default flags to apply when the default filter is set. This is set to FILTER_FLAG_NO_ENCODE_QUOTES by default for backwards compatibility reasons. See the flag list for the list of all the flag names.



Tipi di risorse

Questa estensione non definisce alcun tipo di risorsa.




Types of filters

Indice dei contenuti


Validate filters

Listing of filters for validation
ID Name Options Flags Description
FILTER_VALIDATE_BOOLEAN "boolean" default FILTER_NULL_ON_FAILURE

Returns TRUE for "1", "true", "on" and "yes". Returns FALSE otherwise.

If FILTER_NULL_ON_FAILURE is set, FALSE is returned only for "0", "false", "off", "no", and "", and NULL is returned for all non-boolean values.

FILTER_VALIDATE_EMAIL "validate_email" default   Validates value as e-mail.
FILTER_VALIDATE_FLOAT "float" default, decimal FILTER_FLAG_ALLOW_THOUSAND Validates value as float.
FILTER_VALIDATE_INT "int" default, min_range, max_range FILTER_FLAG_ALLOW_OCTAL, FILTER_FLAG_ALLOW_HEX Validates value as integer, optionally from the specified range.
FILTER_VALIDATE_IP "validate_ip" default FILTER_FLAG_IPV4, FILTER_FLAG_IPV6, FILTER_FLAG_NO_PRIV_RANGE, FILTER_FLAG_NO_RES_RANGE Validates value as IP address, optionally only IPv4 or IPv6 or not from private or reserved ranges.
FILTER_VALIDATE_REGEXP "validate_regexp" default, regexp   Validates value against regexp, a Perl-compatible regular expression.
FILTER_VALIDATE_URL "validate_url" default FILTER_FLAG_PATH_REQUIRED, FILTER_FLAG_QUERY_REQUIRED Validates value as URL (according to » http://www.faqs.org/rfcs/rfc2396), optionally with required components. Beware a valid URL may not specify the HTTP protocol http:// so further validation may be required to determine the URL uses an expected protocol, e.g. ssh:// or mailto:. Note that the function will only find ASCII URLs to be valid; internationalized domain names (containing non-ASCII characters) will fail.

Nota:

As of PHP 5.4.11, the numbers +0 and -0 validate as both integers as well as floats (using FILTER_VALIDATE_FLOAT and FILTER_VALIDATE_INT). Before PHP 5.4.11 they only validated as floats (using FILTER_VALIDATE_FLOAT).

When default is set to option, default's value is used if value is not validated.



Sanitize filters

List of filters for sanitization
ID Name Options Flags Description
FILTER_SANITIZE_EMAIL "email"     Remove all characters except letters, digits and !#$%&'*+-/=?^_`{|}~@.[].
FILTER_SANITIZE_ENCODED "encoded"   FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH URL-encode string, optionally strip or encode special characters.
FILTER_SANITIZE_MAGIC_QUOTES "magic_quotes"     Apply addslashes().
FILTER_SANITIZE_NUMBER_FLOAT "number_float"   FILTER_FLAG_ALLOW_FRACTION, FILTER_FLAG_ALLOW_THOUSAND, FILTER_FLAG_ALLOW_SCIENTIFIC Remove all characters except digits, +- and optionally .,eE.
FILTER_SANITIZE_NUMBER_INT "number_int"     Remove all characters except digits, plus and minus sign.
FILTER_SANITIZE_SPECIAL_CHARS "special_chars"   FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_HIGH HTML-escape '"<>& and characters with ASCII value less than 32, optionally strip or encode other special characters.
FILTER_SANITIZE_FULL_SPECIAL_CHARS "full_special_chars"   FILTER_FLAG_NO_ENCODE_QUOTES, Equivalent to calling htmlspecialchars() with ENT_QUOTES set. Encoding quotes can be disabled by setting FILTER_FLAG_NO_ENCODE_QUOTES. Like htmlspecialchars(), this filter is aware of the default_charset and if a sequence of bytes is detected that makes up an invalid character in the current character set then the entire string is rejected resulting in a 0-length string. When using this filter as a default filter, see the warning below about setting the default flags to 0.
FILTER_SANITIZE_STRING "string"   FILTER_FLAG_NO_ENCODE_QUOTES, FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP Strip tags, optionally strip or encode special characters.
FILTER_SANITIZE_STRIPPED "stripped"     Alias of "string" filter.
FILTER_SANITIZE_URL "url"     Remove all characters except letters, digits and $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=.
FILTER_UNSAFE_RAW "unsafe_raw"   FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH, FILTER_FLAG_ENCODE_AMP Do nothing, optionally strip or encode special characters.

Avviso

When using one of these filters as a default filter either through your ini file or through your web server's configuration, the default flags is set to FILTER_FLAG_NO_ENCODE_QUOTES. You need to explicitly set filter.default_flags to 0 to have quotes encoded by default. Like this:

Example #1 Configuring the default filter to act like htmlspecialchars

filter.default = full_special_chars
filter.default_flags = 0



Other filters

List of miscellaneous filters
ID Name Options Flags Description
FILTER_CALLBACK "callback" callable function or method   Call user-defined function to filter data.



Filter flags

List of filter flags
ID Used with Description
FILTER_FLAG_STRIP_LOW FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_SANITIZE_STRING, FILTER_UNSAFE_RAW Strips characters that has a numerical value <32.
FILTER_FLAG_STRIP_HIGH FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_SANITIZE_STRING, FILTER_UNSAFE_RAW Strips characters that has a numerical value >127.
FILTER_FLAG_ALLOW_FRACTION FILTER_SANITIZE_NUMBER_FLOAT Allows a period (.) as a fractional separator in numbers.
FILTER_FLAG_ALLOW_THOUSAND FILTER_SANITIZE_NUMBER_FLOAT, FILTER_VALIDATE_FLOAT Allows a comma (,) as a thousands separator in numbers.
FILTER_FLAG_ALLOW_SCIENTIFIC FILTER_SANITIZE_NUMBER_FLOAT Allows an e or E for scientific notation in numbers.
FILTER_FLAG_NO_ENCODE_QUOTES FILTER_SANITIZE_STRING If this flag is present, single (') and double (") quotes will not be encoded.
FILTER_FLAG_ENCODE_LOW FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_STRING, FILTER_SANITIZE_RAW Encodes all characters with a numerical value <32.
FILTER_FLAG_ENCODE_HIGH FILTER_SANITIZE_ENCODED, FILTER_SANITIZE_SPECIAL_CHARS, FILTER_SANITIZE_STRING, FILTER_SANITIZE_RAW Encodes all characters with a numerical value >127.
FILTER_FLAG_ENCODE_AMP FILTER_SANITIZE_STRING, FILTER_SANITIZE_RAW Encodes ampersands (&).
FILTER_NULL_ON_FAILURE FILTER_VALIDATE_BOOLEAN Returns NULL for unrecognized boolean values.
FILTER_FLAG_ALLOW_OCTAL FILTER_VALIDATE_INT Regards inputs starting with a zero (0) as octal numbers. This only allows the succeeding digits to be 0-7.
FILTER_FLAG_ALLOW_HEX FILTER_VALIDATE_INT Regards inputs starting with 0x or 0X as hexadecimal numbers. This only allows succeeding characters to be a-fA-F0-9.
FILTER_FLAG_IPV4 FILTER_VALIDATE_IP Allows the IP address to be in IPv4 format.
FILTER_FLAG_IPV6 FILTER_VALIDATE_IP Allows the IP address to be in IPv6 format.
FILTER_FLAG_NO_PRIV_RANGE FILTER_VALIDATE_IP

Fails validation for the following private IPv4 ranges: 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16.

Fails validation for the IPv6 addresses starting with FD or FC.

FILTER_FLAG_NO_RES_RANGE FILTER_VALIDATE_IP Fails validation for the following reserved IPv4 ranges: 0.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24 and 224.0.0.0/4. This flag does not apply to IPv6 addresses.
FILTER_FLAG_PATH_REQUIRED FILTER_VALIDATE_URL Requires the URL to contain a path part.
FILTER_FLAG_QUERY_REQUIRED FILTER_VALIDATE_URL Requires the URL to contain a query string.




Costanti predefinite

Queste costanti sono definite da questa estensione e sono disponibili solo se l'estensione è stata compilata nel PHP o se è stata caricata dinamicamente a runtime.

INPUT_POST (integer)
POST variables.
INPUT_GET (integer)
GET variables.
COOKIE variables.
INPUT_ENV (integer)
ENV variables.
INPUT_SERVER (integer)
SERVER variables.
INPUT_SESSION (integer)
SESSION variables. (not implemented yet)
INPUT_REQUEST (integer)
REQUEST variables. (not implemented yet)
FILTER_FLAG_NONE (integer)
No flags.
FILTER_REQUIRE_SCALAR (integer)
Flag used to require scalar as input
FILTER_REQUIRE_ARRAY (integer)
Require an array as input.
FILTER_FORCE_ARRAY (integer)
Always returns an array.
FILTER_NULL_ON_FAILURE (integer)
Use NULL instead of FALSE on failure.
FILTER_VALIDATE_INT (integer)
ID of "int" filter.
FILTER_VALIDATE_BOOLEAN (integer)
ID of "boolean" filter.
FILTER_VALIDATE_FLOAT (integer)
ID of "float" filter.
FILTER_VALIDATE_REGEXP (integer)
ID of "validate_regexp" filter.
FILTER_VALIDATE_URL (integer)
ID of "validate_url" filter.
FILTER_VALIDATE_EMAIL (integer)
ID of "validate_email" filter.
FILTER_VALIDATE_IP (integer)
ID of "validate_ip" filter.
FILTER_DEFAULT (integer)
ID of default ("string") filter.
FILTER_UNSAFE_RAW (integer)
ID of "unsafe_raw" filter.
FILTER_SANITIZE_STRING (integer)
ID of "string" filter.
FILTER_SANITIZE_STRIPPED (integer)
ID of "stripped" filter.
FILTER_SANITIZE_ENCODED (integer)
ID of "encoded" filter.
FILTER_SANITIZE_SPECIAL_CHARS (integer)
ID of "special_chars" filter.
FILTER_SANITIZE_EMAIL (integer)
ID of "email" filter.
FILTER_SANITIZE_URL (integer)
ID of "url" filter.
FILTER_SANITIZE_NUMBER_INT (integer)
ID of "number_int" filter.
FILTER_SANITIZE_NUMBER_FLOAT (integer)
ID of "number_float" filter.
FILTER_SANITIZE_MAGIC_QUOTES (integer)
ID of "magic_quotes" filter.
FILTER_CALLBACK (integer)
ID of "callback" filter.
FILTER_FLAG_ALLOW_OCTAL (integer)
Allow octal notation (0[0-7]+) in "int" filter.
FILTER_FLAG_ALLOW_HEX (integer)
Allow hex notation (0x[0-9a-fA-F]+) in "int" filter.
FILTER_FLAG_STRIP_LOW (integer)
Strip characters with ASCII value less than 32.
FILTER_FLAG_STRIP_HIGH (integer)
Strip characters with ASCII value greater than 127.
FILTER_FLAG_ENCODE_LOW (integer)
Encode characters with ASCII value less than 32.
FILTER_FLAG_ENCODE_HIGH (integer)
Encode characters with ASCII value greater than 127.
FILTER_FLAG_ENCODE_AMP (integer)
Encode &.
FILTER_FLAG_NO_ENCODE_QUOTES (integer)
Don't encode ' and ".
FILTER_FLAG_EMPTY_STRING_NULL (integer)
(No use for now.)
FILTER_FLAG_ALLOW_FRACTION (integer)
Allow fractional part in "number_float" filter.
FILTER_FLAG_ALLOW_THOUSAND (integer)
Allow thousand separator (,) in "number_float" filter.
FILTER_FLAG_ALLOW_SCIENTIFIC (integer)
Allow scientific notation (e, E) in "number_float" filter.
FILTER_FLAG_PATH_REQUIRED (integer)
Require path in "validate_url" filter.
FILTER_FLAG_QUERY_REQUIRED (integer)
Require query in "validate_url" filter.
FILTER_FLAG_IPV4 (integer)
Allow only IPv4 address in "validate_ip" filter.
FILTER_FLAG_IPV6 (integer)
Allow only IPv6 address in "validate_ip" filter.
FILTER_FLAG_NO_RES_RANGE (integer)
Deny reserved addresses in "validate_ip" filter.
FILTER_FLAG_NO_PRIV_RANGE (integer)
Deny private addresses in "validate_ip" filter.


Esempi

Indice dei contenuti


Validation

Example #1 Validating email addresses with filter_var()

<?php
$email_a 
'joe@example.com';
$email_b 'bogus';

if (
filter_var($email_aFILTER_VALIDATE_EMAIL)) {
    echo 
"This ($email_a) email address is considered valid.";
}
if (
filter_var($email_bFILTER_VALIDATE_EMAIL)) {
    echo 
"This ($email_b) email address is considered valid.";
}
?>

Il precedente esempio visualizzerà:

This (joe@example.com) email address is considered valid.

Example #2 Validating IP addresses with filter_var()

<?php
$ip_a 
'127.0.0.1';
$ip_b '42.42';

if (
filter_var($ip_aFILTER_VALIDATE_IP)) {
    echo 
"This (ip_a) IP address is considered valid.";
}
if (
filter_var($ip_bFILTER_VALIDATE_IP)) {
    echo 
"This (ip_b) IP address is considered valid.";
}
?>

Il precedente esempio visualizzerà:

This (ip_a) IP address is considered valid.

Example #3 Passing options to filter_var()

<?php
$int_a 
'1';
$int_b '-1';
$int_c '4';
$options = array(
    
'options' => array(
                      
'min_range' => 0,
                      
'max_range' => 3,
                      )
);
if (
filter_var($int_aFILTER_VALIDATE_INT$options) !== FALSE) {
    echo 
"This (int_a) integer is considered valid (between 0 and 3).\n";
}
if (
filter_var($int_bFILTER_VALIDATE_INT$options) !== FALSE) {
    echo 
"This (int_b) integer is considered valid (between 0 and 3).\n";
}
if (
filter_var($int_cFILTER_VALIDATE_INT$options) !== FALSE) {
    echo 
"This (int_c) integer is considered valid (between 0 and 3).\n";
}

$options['options']['default'] = 1;
if ((
$int_c filter_var($int_cFILTER_VALIDATE_INT$options)) !== FALSE) {
    echo 
"This (int_c) integer is considered valid (between 0 and 3) and is $int_c.";
}
?>

Il precedente esempio visualizzerà:

This (int_a) integer is considered valid (between 0 and 3).
This (int_c) integer is considered valid (between 0 and 3) and is 1.



Sanitization

Example #1 Sanitizing and validating email addresses

<?php
$a 
'joe@example.org';
$b 'bogus - at - example dot org';
$c '(bogus@example.org)';

$sanitized_a filter_var($aFILTER_SANITIZE_EMAIL);
if (
filter_var($sanitized_aFILTER_VALIDATE_EMAIL)) {
    echo 
"This (a) sanitized email address is considered valid.\n";
}

$sanitized_b filter_var($bFILTER_SANITIZE_EMAIL);
if (
filter_var($sanitized_bFILTER_VALIDATE_EMAIL)) {
    echo 
"This sanitized email address is considered valid.";
} else {
    echo 
"This (b) sanitized email address is considered invalid.\n";
}

$sanitized_c filter_var($cFILTER_SANITIZE_EMAIL);
if (
filter_var($sanitized_cFILTER_VALIDATE_EMAIL)) {
    echo 
"This (c) sanitized email address is considered valid.\n";
    echo 
"Before: $c\n";
    echo 
"After:  $sanitized_c\n";    
}
?>

Il precedente esempio visualizzerà:

This (a) sanitized email address is considered valid.
This (b) sanitized email address is considered invalid.
This (c) sanitized email address is considered valid.
Before: (bogus@example.org)
After: bogus@example.org

Example #2 Configuring a default filter

filter.default = full_special_chars
filter.default_flags = 0




Filter Funzioni


filter_has_var

(PHP 5 >= 5.2.0)

filter_has_varChecks if variable of specified type exists

Descrizione

bool filter_has_var ( int $type , string $variable_name )

Elenco dei parametri

type

One of INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV.

variable_name

Name of a variable to check.

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.



filter_id

(PHP 5 >= 5.2.0)

filter_idReturns the filter ID belonging to a named filter

Descrizione

int filter_id ( string $filtername )

Elenco dei parametri

filtername

Name of a filter to get.

Valori restituiti

ID of a filter on success or FALSE if filter doesn't exist.

Vedere anche:



filter_input_array

(PHP 5 >= 5.2.0)

filter_input_arrayGets external variables and optionally filters them

Descrizione

mixed filter_input_array ( int $type [, mixed $definition [, bool $add_empty = true ]] )

This function is useful for retrieving many values without repetitively calling filter_input().

Elenco dei parametri

type

One of INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV.

definition

An array defining the arguments. A valid key is a string containing a variable name and a valid value is either a filter type, or an array optionally specifying the filter, flags and options. If the value is an array, valid keys are filter which specifies the filter type, flags which specifies any flags that apply to the filter, and options which specifies any options that apply to the filter. See the example below for a better understanding.

This parameter can be also an integer holding a filter constant. Then all values in the input array are filtered by this filter.

add_empty

Add missing keys as NULL to the return value.

Valori restituiti

An array containing the values of the requested variables on success, or FALSE on failure. An array value will be FALSE if the filter fails, or NULL if the variable is not set. Or if the flag FILTER_NULL_ON_FAILURE is used, it returns FALSE if the variable is not set and NULL if the filter fails.

Esempi

Example #1 A filter_input_array() example

<?php
error_reporting
(E_ALL E_STRICT);
/* data actually came from POST
$_POST = array(
    'product_id'    => 'libgd<script>',
    'component'     => '10',
    'versions'      => '2.0.33',
    'testscalar'    => array('2', '23', '10', '12'),
    'testarray'     => '2',
);
*/

$args = array(
    
'product_id'   => FILTER_SANITIZE_ENCODED,
    
'component'    => array('filter'    => FILTER_VALIDATE_INT,
                            
'flags'     => FILTER_REQUIRE_ARRAY
                            
'options'   => array('min_range' => 1'max_range' => 10)
                           ),
    
'versions'     => FILTER_SANITIZE_ENCODED,
    
'doesnotexist' => FILTER_VALIDATE_INT,
    
'testscalar'   => array(
                            
'filter' => FILTER_VALIDATE_INT,
                            
'flags'  => FILTER_REQUIRE_SCALAR,
                           ),
    
'testarray'    => array(
                            
'filter' => FILTER_VALIDATE_INT,
                            
'flags'  => FILTER_REQUIRE_ARRAY,
                           )

);

$myinputs filter_input_array(INPUT_POST$args);

var_dump($myinputs);
echo 
"\n";
?>

Il precedente esempio visualizzerà:

array(6) {
  ["product_id"]=>
  array(1) {
    [0]=>
    string(17) "libgd%3Cscript%3E"
  }
  ["component"]=>
  array(1) {
    [0]=>
    int(10)
  }
  ["versions"]=>
  array(1) {
    [0]=>
    string(6) "2.0.33"
  }
  ["doesnotexist"]=>
  NULL
  ["testscalar"]=>
  bool(false)
  ["testarray"]=>
  array(1) {
    [0]=>
    int(2)
  }
}

Log delle modifiche

Versione Descrizione
5.4.0 Added add_empty parameter.

Note

Nota:

There is no REQUEST_TIME key in INPUT_SERVER array because it is inserted into the $_SERVER later.

Vedere anche:



filter_input

(PHP 5 >= 5.2.0)

filter_inputGets a specific external variable by name and optionally filters it

Descrizione

mixed filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

Elenco dei parametri

type

One of INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV.

variable_name

Name of a variable to get.

filter

The ID of the filter to apply. The Types of filters manual page lists the available filters.

options

Associative array of options or bitwise disjunction of flags. If filter accepts options, flags can be provided in "flags" field of array.

Valori restituiti

Value of the requested variable on success, FALSE if the filter fails, or NULL if the variable_name variable is not set. If the flag FILTER_NULL_ON_FAILURE is used, it returns FALSE if the variable is not set and NULL if the filter fails.

Esempi

Example #1 A filter_input() example

<?php
$search_html 
filter_input(INPUT_GET'search'FILTER_SANITIZE_SPECIAL_CHARS);
$search_url filter_input(INPUT_GET'search'FILTER_SANITIZE_ENCODED);
echo 
"You have searched for $search_html.\n";
echo 
"<a href='?search=$search_url'>Search again.</a>";
?>

Il precedente esempio visualizzerà qualcosa simile a:

You have searched for Me &#38; son.
<a href='?search=Me%20%26%20son'>Search again.</a>

Vedere anche:



filter_list

(PHP 5 >= 5.2.0)

filter_listReturns a list of all supported filters

Descrizione

array filter_list ( void )

Valori restituiti

Returns an array of names of all supported filters, empty array if there are no such filters. Indexes of this array are not filter IDs, they can be obtained with filter_id() from a name instead.

Esempi

Example #1 A filter_list() example

<?php
print_r
(filter_list());
?>

Il precedente esempio visualizzerà qualcosa simile a:

Array
(
    [0] => int
    [1] => boolean
    [2] => float
    [3] => validate_regexp
    [4] => validate_url
    [5] => validate_email
    [6] => validate_ip
    [7] => string
    [8] => stripped
    [9] => encoded
    [10] => special_chars
    [11] => unsafe_raw
    [12] => email
    [13] => url
    [14] => number_int
    [15] => number_float
    [16] => magic_quotes
    [17] => callback
)



filter_var_array

(PHP 5 >= 5.2.0)

filter_var_arrayGets multiple variables and optionally filters them

Descrizione

mixed filter_var_array ( array $data [, mixed $definition [, bool $add_empty = true ]] )

This function is useful for retrieving many values without repetitively calling filter_var().

Elenco dei parametri

data

An array with string keys containing the data to filter.

definition

An array defining the arguments. A valid key is a string containing a variable name and a valid value is either a filter type, or an array optionally specifying the filter, flags and options. If the value is an array, valid keys are filter which specifies the filter type, flags which specifies any flags that apply to the filter, and options which specifies any options that apply to the filter. See the example below for a better understanding.

This parameter can be also an integer holding a filter constant. Then all values in the input array are filtered by this filter.

add_empty

Add missing keys as NULL to the return value.

Valori restituiti

An array containing the values of the requested variables on success, or FALSE on failure. An array value will be FALSE if the filter fails, or NULL if the variable is not set.

Esempi

Example #1 A filter_var_array() example

<?php
error_reporting
(E_ALL E_STRICT);
$data = array(
    
'product_id'    => 'libgd<script>',
    
'component'     => '10',
    
'versions'      => '2.0.33',
    
'testscalar'    => array('2''23''10''12'),
    
'testarray'     => '2',
);

$args = array(
    
'product_id'   => FILTER_SANITIZE_ENCODED,
    
'component'    => array('filter'    => FILTER_VALIDATE_INT,
                            
'flags'     => FILTER_FORCE_ARRAY
                            
'options'   => array('min_range' => 1'max_range' => 10)
                           ),
    
'versions'     => FILTER_SANITIZE_ENCODED,
    
'doesnotexist' => FILTER_VALIDATE_INT,
    
'testscalar'   => array(
                            
'filter' => FILTER_VALIDATE_INT,
                            
'flags'  => FILTER_REQUIRE_SCALAR,
                           ),
    
'testarray'    => array(
                            
'filter' => FILTER_VALIDATE_INT,
                            
'flags'  => FILTER_FORCE_ARRAY,
                           )

);

$myinputs filter_var_array($data$args);

var_dump($myinputs);
echo 
"\n";
?>

Il precedente esempio visualizzerà:

array(6) {
  ["product_id"]=>
  array(1) {
    [0]=>
    string(17) "libgd%3Cscript%3E"
  }
  ["component"]=>
  array(1) {
    [0]=>
    int(10)
  }
  ["versions"]=>
  array(1) {
    [0]=>
    string(6) "2.0.33"
  }
  ["doesnotexist"]=>
  NULL
  ["testscalar"]=>
  bool(false)
  ["testarray"]=>
  array(1) {
    [0]=>
    int(2)
  }
}

Log delle modifiche

Versione Descrizione
5.4.0 Added add_empty parameter.

Vedere anche:



filter_var

(PHP 5 >= 5.2.0)

filter_varFilters a variable with a specified filter

Descrizione

mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

Elenco dei parametri

variable

Value to filter.

filter

The ID of the filter to apply. The Types of filters manual page lists the available filters.

options

Associative array of options or bitwise disjunction of flags. If filter accepts options, flags can be provided in "flags" field of array. For the "callback" filter, callable type should be passed. The callback must accept one argument, the value to be filtered, and return the value after filtering/sanitizing it.

<?php
// for filters that accept options, use this format
$options = array(
    
'options' => array(
        
'default' => 3// value to return if the filter fails
        // other options here
        
'min_range' => 0
    
),
    
'flags' => FILTER_FLAG_ALLOW_OCTAL,
);
$var filter_var('0755'FILTER_VALIDATE_INT$options);

// for filter that only accept flags, you can pass them directly
$var filter_var('oops'FILTER_VALIDATE_BOOLEANFILTER_NULL_ON_FAILURE);

// for filter that only accept flags, you can also pass as an array
$var filter_var('oops'FILTER_VALIDATE_BOOLEAN,
                  array(
'flags' => FILTER_NULL_ON_FAILURE));

// callback validate filter
function foo($value)
{
    
// Expected format: Surname, GivenNames
    
if (strpos($value", ") === false) return false;
    list(
$surname$givennames) = explode(", "$value2);
    
$empty = (empty($surname) || empty($givennames));
    
$notstrings = (!is_string($surname) || !is_string($givennames));
    if (
$empty || $notstrings) {
        return 
false;
    } else {
        return 
$value;
    }
}
$var filter_var('Doe, Jane Sue'FILTER_CALLBACK, array('options' => 'foo'));
?>

Valori restituiti

Returns the filtered data, or FALSE if the filter fails.

Esempi

Example #1 A filter_var() example

<?php
var_dump
(filter_var('bob@example.com'FILTER_VALIDATE_EMAIL));
var_dump(filter_var('http://example.com'FILTER_VALIDATE_URLFILTER_FLAG_PATH_REQUIRED));
?>

Il precedente esempio visualizzerà:

string(15) "bob@example.com"
bool(false)

Vedere anche:


Indice dei contenuti

  • filter_has_var — Checks if variable of specified type exists
  • filter_id — Returns the filter ID belonging to a named filter
  • filter_input_array — Gets external variables and optionally filters them
  • filter_input — Gets a specific external variable by name and optionally filters it
  • filter_list — Returns a list of all supported filters
  • filter_var_array — Gets multiple variables and optionally filters them
  • filter_var — Filters a variable with a specified filter



Function Handling


Introduzione

These functions all handle various operations involved in working with functions.



Installazione/Configurazione

Indice dei contenuti


Requisiti

Non sono necessarie librerie esterne per utilizzare questo modulo.



Installazione

Non è necessaria nessuna installazione per usare queste funzioni, esse fanno parte del core di PHP.



Configurazione di Runtime

Questa estensione non definisce alcuna direttiva di configurazione in php.ini



Tipi di risorse

Questa estensione non definisce alcun tipo di risorsa.




Costanti predefinite

Questa estensione non definisce alcuna costante.



Function handling Funzioni


call_user_func_array

(PHP 4 >= 4.0.4, PHP 5)

call_user_func_arrayCall a callback with an array of parameters

Descrizione

mixed call_user_func_array ( callable $callback , array $param_arr )

Calls the callback given by the first parameter with the parameters in param_arr.

Elenco dei parametri

callback

The callable to be called.

param_arr

The parameters to be passed to the callback, as an indexed array.

Valori restituiti

Returns the return value of the callback, or FALSE on error.

Log delle modifiche

Versione Descrizione
5.3.0 The interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.

Esempi

Example #1 call_user_func_array() example

<?php
function foobar($arg$arg2) {
    echo 
__FUNCTION__" got $arg and $arg2\n";
}
class 
foo {
    function 
bar($arg$arg2) {
        echo 
__METHOD__" got $arg and $arg2\n";
    }
}


// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one""two"));

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo"bar"), array("three""four"));
?>

Il precedente esempio visualizzerà qualcosa simile a:

foobar got one and two
foo::bar got three and four

Example #2 call_user_func_array() using namespace name

<?php

namespace Foobar;

class 
Foo {
    static public function 
test($name) {
        print 
"Hello {$name}!\n";
    }
}

// As of PHP 5.3.0
call_user_func_array(__NAMESPACE__ .'\Foo::test', array('Hannes'));

// As of PHP 5.3.0
call_user_func_array(array(__NAMESPACE__ .'\Foo''test'), array('Philip'));

?>

Il precedente esempio visualizzerà qualcosa simile a:

Hello Hannes!
Hello Philip!

Example #3 Using lambda function

<?php

$func 
= function($arg1$arg2) {
    return 
$arg1 $arg2;
};

var_dump(call_user_func_array($func, array(24))); /* As of PHP 5.3.0 */

?>

Il precedente esempio visualizzerà:

int(8)

Note

Nota:

Before PHP 5.4, referenced variables in param_arr are passed to the function by reference, regardless of whether the function expects the respective parameter to be passed by reference. This form of call-time pass by reference does not emit a deprecation notice, but it is nonetheless deprecated, and has been removed in PHP 5.4. Furthermore, this does not apply to internal functions, for which the function signature is honored. Passing by value when the function expects a parameter by reference results in a warning and having call_user_func() return FALSE (there is, however, an exception for passed values with reference count = 1, such as in literals, as these can be turned into references without ill effects — but also without writes to that value having any effect —; do not rely in this behavior, though, as the reference count is an implementation detail and the soundness of this behavior is questionable).

Nota:

I callback registrati alle funzioni come call_user_func() e call_user_func_array() non saranno invocati se un'eccezione non gestita è trasmessa da un callback precedente.

Vedere anche:



call_user_func

(PHP 4, PHP 5)

call_user_funcCall the callback given by the first parameter

Descrizione

mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )

Calls the callback given by the first parameter and passes the remaining parameters as arguments.

Elenco dei parametri

callback

The callable to be called.

parameter

Zero or more parameters to be passed to the callback.

Nota:

Note that the parameters for call_user_func() are not passed by reference.

Example #1 call_user_func() example and references

<?php
error_reporting
(E_ALL);
function 
increment(&$var)
{
    
$var++;
}

$a 0;
call_user_func('increment'$a);
echo 
$a."\n";

call_user_func_array('increment', array(&$a)); // You can use this instead before PHP 5.3
echo $a."\n";
?>

Il precedente esempio visualizzerà:

0
1

Valori restituiti

Returns the return value of the callback, or FALSE on error.

Log delle modifiche

Versione Descrizione
5.3.0 The interpretation of object oriented keywords like parent and self has changed. Previously, calling them using the double colon syntax would emit an E_STRICT warning because they were interpreted as static.

Esempi

Example #2 call_user_func() example

<?php
function barber($type)
{
    echo 
"You wanted a $type haircut, no problem\n";
}
call_user_func('barber'"mushroom");
call_user_func('barber'"shave");
?>

Il precedente esempio visualizzerà:

You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem

Example #3 call_user_func() using namespace name

<?php

namespace Foobar;

class 
Foo {
    static public function 
test() {
        print 
"Hello world!\n";
    }
}

call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo''test')); // As of PHP 5.3.0

?>

Il precedente esempio visualizzerà:

Hello world!
Hello world!

Example #4 Using a class method with call_user_func()

<?php

class myclass {
    static function 
say_hello()
    {
        echo 
"Hello!\n";
    }
}

$classname "myclass";

call_user_func(array($classname'say_hello'));
call_user_func($classname .'::say_hello'); // As of 5.2.3

$myobject = new myclass();

call_user_func(array($myobject'say_hello'));

?>

Il precedente esempio visualizzerà:

Hello!
Hello!
Hello!

Example #5 Using lambda function with call_user_func()

<?php
call_user_func
(function($arg) { print "[$arg]\n"; }, 'test'); /* As of PHP 5.3.0 */
?>

Il precedente esempio visualizzerà:

[test]

Note

Nota:

I callback registrati alle funzioni come call_user_func() e call_user_func_array() non saranno invocati se un'eccezione non gestita è trasmessa da un callback precedente.

Vedere anche:



create_function

(PHP 4 >= 4.0.1, PHP 5)

create_functionCreate an anonymous (lambda-style) function

Descrizione

string create_function ( string $args , string $code )

Creates an anonymous function from the parameters passed, and returns a unique name for it.

Attenzione

This function internally performs an eval() and as such has the same security issues as eval(). Additionally it has bad performance and memory usage characteristics.

If you are using PHP 5.3.0 or newer a native anonymous function should be used instead.

Elenco dei parametri

Usually these parameters will be passed as single quote delimited strings. The reason for using single quoted strings, is to protect the variable names from parsing, otherwise, if you use double quotes there will be a need to escape the variable names, e.g. \$avar.

args

The function arguments.

code

The function code.

Valori restituiti

Returns a unique function name as a string, or FALSE on error.

Esempi

Example #1 Creating an anonymous function with create_function()

You can use this function, to (for example) create a function from information gathered at run time:

<?php
$newfunc 
create_function('$a,$b''return "ln($a) + ln($b) = " . log($a * $b);');
echo 
"New anonymous function: $newfunc\n";
echo 
$newfunc(2M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
?>

Or, perhaps to have general handler function that can apply a set of operations to a list of parameters:

Example #2 Making a general processing function with create_function()

<?php
function process($var1$var2$farr)
{
    foreach (
$farr as $f) {
        echo 
$f($var1$var2) . "\n";
    }
}

// create a bunch of math functions
$f1 'if ($a >=0) {return "b*a^2 = ".$b*sqrt($a);} else {return false;}';
$f2 "return \"min(b^2+a, a^2,b) = \".min(\$a*\$a+\$b,\$b*\$b+\$a);";
$f3 'if ($a > 0 && $b != 0) {return "ln(a)/b = ".log($a)/$b; } else { return false; }';
$farr = array(
    
create_function('$x,$y''return "some trig: ".(sin($x) + $x*cos($y));'),
    
create_function('$x,$y''return "a hypotenuse: ".sqrt($x*$x + $y*$y);'),
    
create_function('$a,$b'$f1),
    
create_function('$a,$b'$f2),
    
create_function('$a,$b'$f3)
    );

echo 
"\nUsing the first array of anonymous functions\n";
echo 
"parameters: 2.3445, M_PI\n";
process(2.3445M_PI$farr);

// now make a bunch of string processing functions
$garr = array(
    
create_function('$b,$a''if (strncmp($a, $b, 3) == 0) return "** \"$a\" '.
    
'and \"$b\"\n** Look the same to me! (looking at the first 3 chars)";'),
    
create_function('$a,$b''; return "CRCs: " . crc32($a) . ", ".crc32($b);'),
    
create_function('$a,$b''; return "similar(a,b) = " . similar_text($a, $b, &$p) . "($p%)";')
    );
echo 
"\nUsing the second array of anonymous functions\n";
process("Twas brilling and the slithy toves""Twas the night"$garr);
?>

Il precedente esempio visualizzerà:

Using the first array of anonymous functions
parameters: 2.3445, M_PI
some trig: -1.6291725057799
a hypotenuse: 3.9199852871011
b*a^2 = 4.8103313314525
min(b^2+a, a^2,b) = 8.6382729035898
ln(a)/b = 0.27122299212594

Using the second array of anonymous functions
** "Twas the night" and "Twas brilling and the slithy toves"
** Look the same to me! (looking at the first 3 chars)
CRCs: -725381282, 342550513
similar(a,b) = 11(45.833333333333%)

But perhaps the most common use for of lambda-style (anonymous) functions is to create callback functions, for example when using array_walk() or usort()

Example #3 Using anonymous functions as callback functions

<?php
$av 
= array("the ""a ""that ""this ");
array_walk($avcreate_function('&$v,$k''$v = $v . "mango";'));
print_r($av);
?>

Il precedente esempio visualizzerà:

Array
(
  [0] => the mango
  [1] => a mango
  [2] => that mango
  [3] => this mango
)

an array of strings ordered from shorter to longer

<?php

$sv 
= array("small""larger""a big string""it is a string thing");
print_r($sv);

?>

Il precedente esempio visualizzerà:

Array
(
  [0] => small
  [1] => larger
  [2] => a big string
  [3] => it is a string thing
)

sort it from longer to shorter

<?php

usort
($svcreate_function('$a,$b','return strlen($b) - strlen($a);'));
print_r($sv);

?>

Il precedente esempio visualizzerà:

Array
(
  [0] => it is a string thing
  [1] => a big string
  [2] => larger
  [3] => small
)

Vedere anche:



forward_static_call_array

(PHP 5 >= 5.3.0)

forward_static_call_arrayCall a static method and pass the arguments as array

Descrizione

mixed forward_static_call_array ( callable $function , array $parameters )

Calls a user defined function or method given by the function parameter. This function must be called within a method context, it can't be used outside a class. It uses the late static binding. All arguments of the forwarded method are passed as values, and as an array, similarly to call_user_func_array().

Elenco dei parametri

function

The function or method to be called. This parameter may be an array, with the name of the class, and the method, or a string, with a function name.

parameter

One parameter, gathering all the method parameter in one array.

Nota:

Note that the parameters for forward_static_call_array() are not passed by reference.

Valori restituiti

Returns the function result, or FALSE on error.

Esempi

Example #1 forward_static_call_array() example

<?php

class A
{
    const 
NAME 'A';
    public static function 
test() {
        
$args func_get_args();
        echo static::
NAME" ".join(','$args)." \n";
    }
}

class 
extends A
{
    const 
NAME 'B';

    public static function 
test() {
        echo 
self::NAME"\n";
        
forward_static_call_array(array('A''test'), array('more''args'));
        
forward_static_call_array'test', array('other''args'));
    }
}

B::test('foo');

function 
test() {
        
$args func_get_args();
        echo 
"C ".join(','$args)." \n";
    }

?>

Il precedente esempio visualizzerà:

B
B more,args 
C other,args

Vedere anche:



forward_static_call

(PHP 5 >= 5.3.0)

forward_static_callCall a static method

Descrizione

mixed forward_static_call ( callable $function [, mixed $parameter [, mixed $... ]] )

Calls a user defined function or method given by the function parameter, with the following arguments. This function must be called within a method context, it can't be used outside a class. It uses the late static binding.

Elenco dei parametri

function

The function or method to be called. This parameter may be an array, with the name of the class, and the method, or a string, with a function name.

parameter

Zero or more parameters to be passed to the function.

Valori restituiti

Returns the function result, or FALSE on error.

Esempi

Example #1 forward_static_call() example

<?php

class A
{
    const 
NAME 'A';
    public static function 
test() {
        
$args func_get_args();
        echo static::
NAME" ".join(','$args)." \n";
    }
}

class 
extends A
{
    const 
NAME 'B';

    public static function 
test() {
        echo 
self::NAME"\n";
        
forward_static_call(array('A''test'), 'more''args');
        
forward_static_call'test''other''args');
    }
}

B::test('foo');

function 
test() {
        
$args func_get_args();
        echo 
"C ".join(','$args)." \n";
    }

?>

Il precedente esempio visualizzerà:

B
B more,args 
C other,args

Vedere anche:



func_get_arg

(PHP 4, PHP 5)

func_get_argReturn an item from the argument list

Descrizione

mixed func_get_arg ( int $arg_num )

Gets the specified argument from a user-defined function's argument list.

This function may be used in conjunction with func_get_args() and func_num_args() to allow user-defined functions to accept variable-length argument lists.

Elenco dei parametri

arg_num

The argument offset. Function arguments are counted starting from zero.

Valori restituiti

Returns the specified argument, or FALSE on error.

Log delle modifiche

Versione Descrizione
5.3.0 This function can now be used in parameter lists.
5.3.0 If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE.

Errori/Eccezioni

Generates a warning if called from outside of a user-defined function, or if arg_num is greater than the number of arguments actually passed.

Esempi

Example #1 func_get_arg() example

<?php
function foo()
{
     
$numargs func_num_args();
     echo 
"Number of arguments: $numargs<br />\n";
     if (
$numargs >= 2) {
         echo 
"Second argument is: " func_get_arg(1) . "<br />\n";
     }
}

foo (123);
?>

Example #2 func_get_arg() example before and after PHP 5.3

test.php
<?php
function foo() {
    include 
'./fga.inc';
}

foo('First arg''Second arg');
?>

fga.inc
<?php

$arg 
func_get_arg(1);
var_export($arg);

?>

Output previous to PHP 5.3:

'Second arg'

Output in PHP 5.3 and later:

Warning: func_get_arg():  Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fga.inc on line 3
false

Example #3 func_get_arg() example of byref and byval arguments

<?php
function byVal($arg) {
    echo 
'As passed     : 'var_export(func_get_arg(0)), PHP_EOL;
    
$arg 'baz';
    echo 
'After change  : 'var_export(func_get_arg(0)), PHP_EOL;
}

function 
byRef(&$arg) {
    echo 
'As passed     : 'var_export(func_get_arg(0)), PHP_EOL;
    
$arg 'baz';
    echo 
'After change  : 'var_export(func_get_arg(0)), PHP_EOL;
}

$arg 'bar';
byVal($arg);
byRef($arg);
?>

Il precedente esempio visualizzerà:


As passed : 'bar'
After change : 'bar'
As passed : 'bar'
After change : 'baz'

Note

Nota:

Dal momento che questa funzione dipende dallo scope attuale per determinare i dettagli dei parametri, non può essere utilizzata come parametro di funzione. Se si deve passare questo valore, assegnare il suo risultato a una variabile, e passare la variabile.

Nota:

Se gli argomenti sono passati per riferimento, ogni cambiamento degli argomenti si ripercuoterà sui valori restituiti da questa funzione.

Nota: This function returns a copy of the passed arguments only, and does not account for default (non-passed) arguments.

Vedere anche:



func_get_args

(PHP 4, PHP 5)

func_get_argsReturns an array comprising a function's argument list

Descrizione

array func_get_args ( void )

Gets an array of the function's argument list.

This function may be used in conjunction with func_get_arg() and func_num_args() to allow user-defined functions to accept variable-length argument lists.

Valori restituiti

Returns an array in which each element is a copy of the corresponding member of the current user-defined function's argument list.

Log delle modifiche

Versione Descrizione
5.3.0 This function can now be used in parameter lists.
5.3.0 If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns FALSE.

Errori/Eccezioni

Generates a warning if called from outside of a user-defined function.

Esempi

Example #1 func_get_args() example

<?php
function foo()
{
    
$numargs func_num_args();
    echo 
"Number of arguments: $numargs<br />\n";
    if (
$numargs >= 2) {
        echo 
"Second argument is: " func_get_arg(1) . "<br />\n";
    }
    
$arg_list func_get_args();
    for (
$i 0$i $numargs$i++) {
        echo 
"Argument $i is: " $arg_list[$i] . "<br />\n";
    }
}

foo(123);
?>

Il precedente esempio visualizzerà:

Number of arguments: 3<br />
Second argument is: 2<br />
Argument 0 is: 1<br />
Argument 1 is: 2<br />
Argument 2 is: 3<br />

Example #2 func_get_args() example before and after PHP 5.3

test.php
<?php
function foo() {
    include 
'./fga.inc';
}

foo('First arg''Second arg');
?>

fga.inc
<?php

$args 
func_get_args();
var_export($args);

?>

Output previous to PHP 5.3:

array (
  0 => 'First arg',
  1 => 'Second arg',
)

Output in PHP 5.3 and later:

Warning: func_get_args():  Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fga.inc on line 3
false

Example #3 func_get_args() example of byref and byval arguments

<?php
function byVal($arg) {
    echo 
'As passed     : 'var_export(func_get_args()), PHP_EOL;
    
$arg 'baz';
    echo 
'After change  : 'var_export(func_get_args()), PHP_EOL;
}

function 
byRef(&$arg) {
    echo 
'As passed     : 'var_export(func_get_args()), PHP_EOL;
    
$arg 'baz';
    echo 
'After change  : 'var_export(func_get_args()), PHP_EOL;
}

$arg 'bar';
byVal($arg);
byRef($arg);
?>

Il precedente esempio visualizzerà:


As passed : array (
0 => 'bar',
)
After change : array (
0 => 'bar',
)
As passed : array (
0 => 'bar',
)
After change : array (
0 => 'baz',
)

Note

Nota:

Dal momento che questa funzione dipende dallo scope attuale per determinare i dettagli dei parametri, non può essere utilizzata come parametro di funzione. Se si deve passare questo valore, assegnare il suo risultato a una variabile, e passare la variabile.

Nota:

Se gli argomenti sono passati per riferimento, ogni cambiamento degli argomenti si ripercuoterà sui valori restituiti da questa funzione.

Nota: This function returns a copy of the passed arguments only, and does not account for default (non-passed) arguments.

Vedere anche:



func_num_args

(PHP 4, PHP 5)

func_num_argsReturns the number of arguments passed to the function

Descrizione

int func_num_args ( void )

Gets the number of arguments passed to the function.

This function may be used in conjunction with func_get_arg() and func_get_args() to allow user-defined functions to accept variable-length argument lists.

Valori restituiti

Returns the number of arguments passed into the current user-defined function.

Log delle modifiche

Versione Descrizione
5.3.0 This function can now be used in parameter lists.
5.3.0 If this function is called from the outermost scope of a file which has been included by calling include or require from within a function in the calling file, it now generates a warning and returns -1.

Errori/Eccezioni

Generates a warning if called from outside of a user-defined function.

Esempi

Example #1 func_num_args() example

<?php
function foo()
{
    
$numargs func_num_args();
    echo 
"Number of arguments: $numargs\n";
}

foo(123);   
?>

Il precedente esempio visualizzerà:

Number of arguments: 3

Example #2 func_num_args() example before and after PHP 5.3

test.php
<?php
function foo() {
    include 
'./fna.php';
}

foo('First arg''Second arg');
?>

fna.php
<?php

$num_args 
func_num_args();
var_export($num_args);

?>

Output previous to PHP 5.3:

2

Output in PHP 5.3 and later will be something similar to:

Warning: func_num_args():  Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fna.php on line 3
-1

Note

Nota:

Dal momento che questa funzione dipende dallo scope attuale per determinare i dettagli dei parametri, non può essere utilizzata come parametro di funzione. Se si deve passare questo valore, assegnare il suo risultato a una variabile, e passare la variabile.

Vedere anche:



function_exists

(PHP 4, PHP 5)

function_existsReturn TRUE if the given function has been defined

Descrizione

bool function_exists ( string $function_name )

Checks the list of defined functions, both built-in (internal) and user-defined, for function_name.

Elenco dei parametri

function_name

The function name, as a string.

Valori restituiti

Returns TRUE if function_name exists and is a function, FALSE otherwise.

Nota:

This function will return FALSE for constructs, such as include_once and echo.

Esempi

Example #1 function_exists() example

<?php
if (function_exists('imap_open')) {
    echo 
"IMAP functions are available.<br />\n";
} else {
    echo 
"IMAP functions are not available.<br />\n";
}
?>

Note

Nota:

A function name may exist even if the function itself is unusable due to configuration or compiling options (with the image functions being an example).

Vedere anche:



get_defined_functions

(PHP 4 >= 4.0.4, PHP 5)

get_defined_functionsReturns an array of all defined functions

Descrizione

array get_defined_functions ( void )

Gets an array of all defined functions.

Valori restituiti

Returns a multidimensional array containing a list of all defined functions, both built-in (internal) and user-defined. The internal functions will be accessible via $arr["internal"], and the user defined ones using $arr["user"] (see example below).

Esempi

Example #1 get_defined_functions() example

<?php
function myrow($id$data)
{
    return 
"<tr><th>$id</th><td>$data</td></tr>\n";
}

$arr get_defined_functions();

print_r($arr);
?>

Il precedente esempio visualizzerà qualcosa simile a:

Array
(
    [internal] => Array
        (
            [0] => zend_version
            [1] => func_num_args
            [2] => func_get_arg
            [3] => func_get_args
            [4] => strlen
            [5] => strcmp
            [6] => strncmp
            ...
            [750] => bcscale
            [751] => bccomp
        )

    [user] => Array
        (
            [0] => myrow
        )

)

Vedere anche:



register_shutdown_function

(PHP 4, PHP 5)

register_shutdown_functionRegister a function for execution on shutdown

Descrizione

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

Registers a callback to be executed after script execution finishes or exit() is called.

Multiple calls to register_shutdown_function() can be made, and each will be called in the same order as they were registered. If you call exit() within one registered shutdown function, processing will stop completely and no other registered shutdown functions will be called.

Elenco dei parametri

callback

The shutdown callback to register.

The shutdown callbacks are executed as the part of the request, so it's possible to send output from them and access output buffers.

parameter

It is possible to pass parameters to the shutdown function by passing additional parameters.

...

Valori restituiti

Nessun valore viene restituito.

Errori/Eccezioni

If the passed callback is not callable a E_WARNING level error will be generated.

Log delle modifiche

Versione Descrizione
4.1.0 The shutdown functions are now called as a part of the request. In earlier versions under Apache, the registered shutdown functions were called after the request has been completed (including sending any output buffers), so it was not possible to send output to the browser using echo or print, or retrieve the contents of any output buffers using ob_get_contents(). Headers were also always already sent.

Esempi

Example #1 register_shutdown_function() example

<?php
function shutdown()
{
    
// This is our shutdown function, in 
    // here we can do any last operations
    // before the script is complete.

    
echo 'Script executed with success'PHP_EOL;
}

register_shutdown_function('shutdown');
?>

Note

Nota:

Working directory of the script can change inside the shutdown function under some web servers, e.g. Apache.

Nota:

Shutdown functions will not be executed if the process is killed with a SIGTERM or SIGKILL signal. While you cannot intercept a SIGKILL, you can use pcntl_signal() to install a handler for a SIGTERM which uses exit() to end cleanly.

Vedere anche:



register_tick_function

(PHP 4 >= 4.0.3, PHP 5)

register_tick_functionRegister a function for execution on each tick

Descrizione

bool register_tick_function ( callable $function [, mixed $arg [, mixed $... ]] )

Registers the given function to be executed when a tick is called.

Elenco dei parametri

function

The function name as a string, or an array consisting of an object and a method.

arg

...

Valori restituiti

Restituisce TRUE in caso di successo, FALSE in caso di fallimento.

Esempi

Example #1 register_tick_function() example

<?php
declare(ticks=1);

// using a function as the callback
register_tick_function('my_function'true);

// using an object->method
$object = new my_class();
register_tick_function(array(&$object'my_method'), true);
?>

Log delle modifiche

Versione Descrizione
5.3.0 Ticks are now supported on threaded web server modules.

Note

Avviso

register_tick_function() should not be used with threaded web server modules with PHP 5.2 or lower.

Vedere anche:



unregister_tick_function

(PHP 4 >= 4.0.3, PHP 5)

unregister_tick_functionDe-register a function for execution on each tick

Descrizione

void unregister_tick_function ( string $function_name )

De-registers the function named by function_name so it is no longer executed when a tick is called.

Elenco dei parametri

function_name

The function name, as a string.

Valori restituiti

Nessun valore viene restituito.

Vedere anche:


Indice dei contenuti




Object Aggregation/Composition [PHP 4]


Introduzione

Avviso

Questo modulo è SPERIMENTALE. Ovvero, il comportamento di queste funzioni, i nomi di queste funzioni, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questo modulo è a vostro rischio.

In Object Oriented Programming, it is common to see the composition of simple classes (and/or instances) into a more complex one. This is a flexible strategy for building complicated objects and object hierarchies and can function as a dynamic alternative to multiple inheritance. There are two ways to perform class (and/or object) composition depending on the relationship between the composed elements: Association and Aggregation.



Esempi

Indice dei contenuti


Object Aggregation examples

An Association is a composition of independently constructed and externally visible parts. When we associate classes or objects, each one keeps a reference to the ones it is associated with. When we associate classes statically, one class will contain a reference to an instance of the other class. For example:

Example #1 Class association

<?php
class MyDateTime {
  
  function 
MyDateTime() 
  {
      
// empty constructor
  
}

  function 
now() 
  {
      return 
date("Y-m-d H:i:s");
  }
}

class 
Report {
  var 
$_dt;
  
// more properties ...

  
function Report() 
  {
      
$this->_dt = new MyDateTime();
      
// initialization code ...
  
}

  function 
generateReport() 
  {
      
$dateTime $this->_dt->now();
      
// more code ...
  
}

  
// more methods ...
}

$rep = new Report();
?>
We can also associate instances at runtime by passing a reference in a constructor (or any other method), which allow us to dynamically change the association relationship between objects. We will modify the example above to illustrate this point:

Example #2 Object association

<?php
class MyDateTime {
  
// same as previous example
}

class 
MyDateTimePlus {
  var 
$_format;
  
  function 
MyDateTimePlus($format="Y-m-d H:i:s"
  {
      
$this->_format $format;
  }

  function 
now() 
  {
      return 
date($this->_format);
  }
}

class 
Report {
  var 
$_dt;    // we'll keep the reference to MyDateTime here
  // more properties ...

  
function Report() 
  {
      
// do some initialization
  
}

  function 
setMyDateTime(&$dt
  {
      
$this->_dt =& $dt;
  }

  function 
generateReport() 
  {
      
$dateTime $this->_dt->now();
      
// more code ...
  
}

  
// more methods ...
}

$rep = new Report();
$dt = new MyDateTime();
$dtp = new MyDateTimePlus("l, F j, Y (h:i:s a, T)");

// generate report with simple date for web display
$rep->setMyDateTime($dt);
echo 
$rep->generateReport();

// later on in the code ...

// generate report with fancy date
$rep->setMyDateTime($dtp);
$output $rep->generateReport();
// save $output in database
// ... etc ... 
?>

Aggregation, on the other hand, implies encapsulation (hidding) of the parts of the composition. We can aggregate classes by using a (static) inner class (PHP does not yet support inner classes), in this case the aggregated class definition is not accessible, except through the class that contains it. The aggregation of instances (object aggregation) involves the dynamic creation of subobjects inside an object, in the process, expanding the properties and methods of that object.

Object aggregation is a natural way of representing a whole-part relationship, (for example, molecules are aggregates of atoms), or can be used to obtain an effect equivalent to multiple inheritance, without having to permanently bind a subclass to two or more parent classes and their interfaces. In fact object aggregation can be more flexible, in which we can select what methods or properties to "inherit" in the aggregated object.



Esempi

We define 3 classes, each implementing a different storage method:

Example #1 storage_classes.inc

<?php
class FileStorage {
   var 
$data;

   function 
FileStorage($data
   {
       
$this->data $data;
   }
   
   function 
write($name
   {
       
$fp fopen(name"w");
       
fwrite($fp$this->data);
       
fclose($data);
   }
}

class 
WDDXStorage {
   var 
$data;
   var 
$version "1.0";
   var 
$_id// "private" variable

   
function WDDXStorage($data
   {
       
$this->data $data;
       
$this->_id $this->_genID();
   }

   function 
store() 
   {
       if (
$this->_id) {
           
$pid wddx_packet_start($this->_id);
           
wddx_add_vars($pid"this->data");
           
$packet wddx_packet_end($pid);
       } else {
           
$packet wddx_serialize_value($this->data);
       }
       
$dbh dba_open("varstore""w""gdbm");
       
dba_insert(md5(uniqid(""true)), $packet$dbh);
       
dba_close($dbh);
   }

   
// a private method
   
function _genID() 
   {
       return 
md5(uniqid(rand(), true));
   }
}

class 
DBStorage {
   var 
$data;
   var 
$dbtype "mysql";

   function 
DBStorage($data
   {
       
$this->data $data;
   }

   function 
save() 
   {
       
$dbh mysql_connect();
       
mysql_select_db("storage"$dbh);
       
$serdata serialize($this->data);
       
mysql_query("insert into vars ('$serdata',now())"$dbh);
       
mysql_close($dbh);
   }
}

?>

We then instantiate a couple of objects from the defined classes, and perform some aggregations and deaggregations, printing some object information along the way:

Example #2 test_aggregation.php

<?php
include "storageclasses.inc";

// some utilty functions

function p_arr($arr
{
   foreach (
$arr as $k => $v)
       
$out[] = "\t$k => $v";
   return 
implode("\n"$out);
}

function 
object_info($obj
{
   
$out[] = "Class: " get_class($obj);
   foreach (
get_object_vars($obj) as $var=>$val) {
       if (
is_array($val)) {
           
$out[] = "property: $var (array)\n" p_arr($val);
       } else {
           
$out[] = "property: $var = $val";
       }
   }
   foreach (
get_class_methods($obj) as $method) {
       
$out[] = "method: $method";
   }
   return 
implode("\n"$out);
}


$data = array(M_PI"kludge != cruft");

// we create some basic objects
$fs = new FileStorage($data);
$ws = new WDDXStorage($data);

// print information on the objects
echo "\$fs object\n";
echo 
object_info($fs) . "\n";
echo 
"\n\$ws object\n";
echo 
object_info($ws) . "\n";

// do some aggregation

echo "\nLet's aggregate \$fs to the WDDXStorage class\n";
aggregate($fs"WDDXStorage");
echo 
"\$fs object\n";
echo 
object_info($fs) . "\n";

echo 
"\nNow let us aggregate it to the DBStorage class\n";
aggregate($fs"DBStorage");
echo 
"\$fs object\n";
echo 
object_info($fs) . "\n";

echo 
"\nAnd finally deaggregate WDDXStorage\n";
deaggregate($fs"WDDXStorage");
echo 
"\$fs object\n";
echo 
object_info($fs) . "\n";

?>

We will now consider the output to understand some of the side-effects and limitation of object aggregation in PHP. First, the newly created $fs and $ws objects give the expected output (according to their respective class declaration). Note that for the purposes of object aggregation, private elements of a class/object begin with an underscore character ("_"), even though there is not real distinction between public and private class/object elements in PHP.

$fs object
Class: filestorage
property: data (array)
   0 => 3.1415926535898
   1 => kludge != cruft
method: filestorage
method: write

$ws object
Class: wddxstorage
property: data (array)
   0 => 3.1415926535898
   1 => kludge != cruft
property: version = 1.0
property: _id = ID::9bb2b640764d4370eb04808af8b076a5
method: wddxstorage
method: store
method: _genid

We then aggregate $fs with the WDDXStorage class, and print out the object information. We can see now that even though nominally the $fs object is still of FileStorage, it now has the property $version, and the method store(), both defined in WDDXStorage. One important thing to note is that it has not aggregated the private elements defined in the class, which are present in the $ws object. Also absent is the constructor from WDDXStorage, which will not be logical to aggegate.

Let's aggregate $fs to the WDDXStorage class
$fs object
Class: filestorage
property: data (array)
   0 => 3.1415926535898
   1 => kludge != cruft
property: version = 1.0
method: filestorage
method: write
method: store

The process of aggregation is cumulative, so when we aggregate $fs with the class DBStorage, generating an object that can use the storage methods of all the defined classes.

Now let us aggregate it to the DBStorage class
$fs object
Class: filestorage
property: data (array)
   0 => 3.1415926535898
   1 => kludge != cruft
property: version = 1.0
property: dbtype = mysql
method: filestorage
method: write
method: store
method: save

Finally, the same way we aggregated properties and methods dynamically, we can also deaggregate them from the object. So, if we deaggregate the class WDDXStorage from $fs, we will obtain:

And deaggregate the WDDXStorage methods and properties
$fs object
Class: filestorage
property: data (array)
   0 => 3.1415926535898
   1 => kludge != cruft
property: dbtype = mysql
method: filestorage
method: write
method: save

One point that we have not mentioned above, is that the process of aggregation will not override existing properties or methods in the objects. For example, the class FileStorage defines a $data property, and the class WDDXStorage also defines a similar property which will not override the one in the object acquired during instantiation from the class FileStorage.




Object Aggregation Funzioni


aggregate_info

(PHP 4 >= 4.3.0)

aggregate_info Gets aggregation information for a given object

Descrizione

array aggregate_info ( object $object )

Gets the aggregation information for the given object.

Elenco dei parametri

object

Valori restituiti

Returns the aggregation information as an associative array of arrays of methods and properties. The key for the main array is the name of the aggregated class.

Esempi

Example #1 Using aggregate_info()

<?php

class Slicer {
    var 
$vegetable;

    function 
Slicer($vegetable
    {
        
$this->vegetable $vegetable;
    }

    function 
slice_it($num_cuts
    {
        echo 
"Doing some simple slicing\n";
        for (
$i=0$i $num_cuts$i++) {
            
// do some slicing
        
}
    }
}

class 
Dicer {
    var 
$vegetable;
    var 
$rotation_angle 90;   // degrees

    
function Dicer($vegetable
    {
        
$this->vegetable $vegetable;
    }

    function 
dice_it($num_cuts
    {
        echo 
"Cutting in one direction\n";
        for (
$i=0$i $num_cuts$i++) {
            
// do some cutting
        
}
        
$this->rotate($this->rotation_angle);
        echo 
"Cutting in a second direction\n";
        for (
$i=0$i $num_cuts$i++) {
            
// do some more cutting
        
}
    }

    function 
rotate($deg
    {
        echo 
"Now rotating {$this->vegetable} {$deg} degrees\n";
    }

    function 
_secret_super_dicing($num_cuts
    {
        
// so secret we cannot show you ;-)
    
}
}

$obj = new Slicer('onion');
aggregate($obj'Dicer');
print_r(aggregate_info($obj));
?>

Il precedente esempio visualizzerà:

Array
(
    [dicer] => Array
        (
            [methods] => Array
                (
                    [0] => dice_it
                    [1] => rotate
                )

            [properties] => Array
                (
                    [0] => rotation_angle
                )

        )

)
As you can see, all properties and methods of the Dicer class have been aggregated into our new object, with the exception of the class constructor and the method _secret_super_dicing()

Vedere anche:



aggregate_methods_by_list

(PHP 4 >= 4.2.0)

aggregate_methods_by_list Selective dynamic class methods aggregation to an object

Descrizione

void aggregate_methods_by_list ( object $object , string $class_name , array $methods_list [, bool $exclude = false ] )

Aggregates methods from a class to an existing object using a list of method names.

The class constructor or methods whose names start with an underscore character (_), which are considered private to the aggregated class, are always excluded.

Elenco dei parametri

object

class_name

methods_list

exclude

The optional parameter exclude is used to decide whether the list contains the names of methods to include in the aggregation (i.e. exclude is FALSE), or to exclude from the aggregation (exclude is TRUE).

Valori restituiti

Nessun valore viene restituito.

Vedere anche:



aggregate_methods_by_regexp

(PHP 4 >= 4.2.0)

aggregate_methods_by_regexp Selective class methods aggregation to an object using a regular expression

Descrizione

void aggregate_methods_by_regexp ( object $object , string $class_name , string $regexp [, bool $exclude = false ] )

Aggregates methods from a class to an existing object using a regular expression to match method names.

The class constructor or methods whose names start with an underscore character (_), which are considered private to the aggregated class, are always excluded.

Elenco dei parametri

object

class_name

regexp

exclude

The optional parameter exclude is used to decide whether the regular expression will select the names of methods to include in the aggregation (i.e. exclude is FALSE), or to exclude from the aggregation (exclude is TRUE).

Valori restituiti

Nessun valore viene restituito.

Vedere anche: