Introduzione
per voi di capire il RFC
è necessario capire il problema prima e la ragione è stato introdotto.
l'array
$arr = array(
array(
'firstname' => 'Bob', <--
'lastname' => 'Tomato' | <--
), | |
array( | |
'firstname' => 'Larry', <-- |
'lastname' => 'Cucumber' <-|
)
);
Ottenere Colonna
Per ottenere Bob & Larry
o Tomato and Cucumber
hai utilizzare più di una riga di esempi di codice sono:
$colums = array();
foreach (array_map(null, $arr[0], $arr[1]) as $value) {
$colums[] = $value;
}
print_r($colums);
Output
Array
(
[0] => Array
(
[0] => Bob
[1] => Larry
)
[1] => Array
(
[0] => Tomato
[1] => Cucumber
)
)
dinamica Versione
Il codice di cui sopra potrebbe funzionare solo se si conosce il numero di elementi in un altro modo creativo sarebbe
$colums = array();
array_unshift($arr, null);
foreach (call_user_func_array("array_map", $arr) as $value) {
$colums[] = $value;
}
Live Test
or Better Sill utilizzare MultipleIterator
$mi = new MultipleIterator(MultipleIterator::MIT_NEED_ALL);
foreach ($arr as $v) {
$mi->attachIterator(new ArrayIterator($v));
}
$colums = array();
foreach ($mi as $v) {
$colums[] = $v;
}
print_r($colums);
Live Test
Nome chiave
Se avete bisogno di ottenere il nome della chiave qui è un altro metodo
$colums = array_reduce($arr, function ($a, $b) {
foreach ($b as $k => $v) {
$a[$k][] = $v;
}
return $a;
});
Live Test
Torna array_column
array_column
intende semplicemente il processo e ottenere tutte le colonne con il primo nome sarebbe stato semplice come il seguente:
print_r(array_column($arr,"lastname"));
^
|
+--- This get value with key "lastname"
Live Test
più complessa Senerio
Immaginate di voler l'array avere questa uscita
Array
(
[Bob] => Tomato
[Larry] => Cucumber
)
usare i vecchi metodi che è possibile avere
$colums = array();
array_unshift($arr, null);
foreach (call_user_func_array("array_map", $arr) as $value) {
$key = array_shift($value);
$colums[$key] = current($value);
}
print_r($colums);
Live Test
Ora potete vedere ho dovuto usare array_shift
e current
per arrivare primo elemento 2 ..come l'array cresce questo può diventare complessa ma array_column
semplificherebbe questo
print_r(array_column($arr,"lastname","firstname"));
^ ^
| |
Value Key (I wonder why position is backwards)
Output
Array
(
[Bob] => Tomato
[Larry] => Cucumber
)
infine tornare alla tua domanda
What will be returned if a named key doesn't exist?
Array vuoto ... Da il tuo esempio
print_r(array_column($arr,"middlename"));
^
|
it would try to check if any of your array has key middle man
It returns
Array <------- Otherwise returns empty array
(
)
Conclusione
ho usato in modo possono esempi diversi che utilizzano loop
, array_map
, array_reduce
e MultipleIterator
per spiegare cosa array_column
sta cercando di raggiungere.
Come si può vedere array_column
è molto più semplificato ma i would advice you play with the examples in the RFC un po 'e questo permetterebbe di capire meglio se ancora non lo capisco, PHP
è un linguaggio flessibile, si può sempre implementare la propria versione
Link o non è successo. –
cos'è questa funzione array_column? –
https://wiki.php.net/rfc/array_column –