In php come posso accedere ai valori di una matrice senza utilizzare parentesi quadre attorno alla chiave? Il mio problema particolare è che voglio accedere agli elementi di una matrice restituita da una funzione. Say function (args) restituisce un array. Perché è $ var = function (args) [0]; urlando contro le parentesi quadre? Posso fare qualcosa come $ var = function (args) .value (0); o mi manca qualcosa di molto semplice?accesso ai valori degli array senza parentesi quadre in php
risposta
Mentre gli altri hanno già detto, è praticamente necessario utilizzare una variabile temporanea:
$temp = myFunction();
$value = $temp[0];
Ma, se conoscere la struttura della matrice restituita è possibile evitare la variabile temporanea.
Se si desidera solo il primo membro:
$value = reset(myFunction());
Se si desidera che l'ultimo membro:
$value = end(myFunction());
Se volete uno qualsiasi tra:
// second member
list(, $value) = myFunction();
// third
list(, , $value) = myFunction();
// or if you want more than one:
list(, , $thirdVar, , $fifth) = myFunction();
Ehi, intelligente! 'list()' non smette mai di stupirmi. +1. –
reset() e end() richiedono che gli argomenti siano riferimenti. Ricevi una notifica E_STRICT nelle versioni recenti di php. – goat
sì, lo sto facendo con variabili temporanee, ma mi chiedevo se ne avessi davvero bisogno. ora mi sto solo chiedendo _why_ devo. ma in ogni caso l'uso di list() è abbastanza intelligente. Grazie! – amb
In PHP, quando ottiene un array come un risultato della funzione, si deve purtroppo fare un passo in più:
$temp_array = function($args);
$var = $temp_array[0];
Per gli oggetti, questo è stato rilassato in PHP 5. Si può fare:
$echo function($args)->property;
(fornito function
restituisce un oggetto, naturalmente.)
Fa schifo ma questo è l'unico modo per farlo. Uno dei tanti motivi per odiare PHP. –
@Luke vero, ma non * quello * brutto imo. Chissà, potrebbe essere corretto in PHP 7 :) –
@Luke - è un po 'forte no? – nickf
function getKey($array, $key){
return $array[$key];
}
$var = getKey(myFunc(args), $key);
non v'è alcun modo per farlo questo senza aggiungere una funzione utente purtroppo. Non fa parte della sintassi.
Si può sempre farlo solo il vecchio modo di moda
$array = myFunc();
$value = $array[0];
cosa esattamente corrisponde alle vostre aspettative:
echo pos(array_slice($a=myFunc(), pos(array_keys(array_keys($a), 'NameOfKey'));
risposto Kinetix Kin, Taipei
se volete questo, la sua, probabilmente meglio di tornare un oggetto (purtroppo, la sua php totalmente zoppo doesnt sostenere questo). Heres un modo pazzesco ero in grado di capire, però, di novità (per favore non fare questo!):
function returnsArray(){
return array("foo" => "bar");
}
echo json_decode(json_encode((object)returnsArray()))->foo;
//prints 'bar'
Così yeah..until aggiungono il supporto per serie dereferencing in php, penso che probabilmente si dovrebbe solo lanciare la matrice di ritorno come un oggetto:
return (object)array("foo" => "bar");
e allora si può fare returnsArray() -> foo, dal momento che php rilassa dereferenziazione per gli oggetti, ma non le matrici .. o, naturalmente, scrivere una funzione wrapper come altri hanno suggerito.
, sembra che il supporto per questo sia stato recentemente aggiunto a php? http://wiki.php.net/rfc/functionarraydereferencing – mutexkid
- 1. PHP - Accesso ai valori di array multidimensionali
- 2. Array PHP - parentesi quadre vs parentesi graffe ($ array [$ i] vs $ array {$ i})
- 3. PHP chiavi degli array valori
- 4. Parentesi quadre in XML?
- 5. Java: stampa lista collegata senza parentesi quadre?
- 6. Catturare il testo tra parentesi quadre in PHP
- 7. montaggio parentesi quadre
- 8. Diversi modi di accesso ai valori degli attributi utilizzando javascript
- 9. “Il rigore” di parentesi quadre
- 10. Come unire i valori degli array in PHP?
- 11. Parentesi intorno ai valori di ritorno - perché?
- 12. Come stampare gli array Numpy senza alcuna notazione aggiuntiva (parentesi quadre [] e spazi tra gli elementi)?
- 13. cosa significano le parentesi quadre? in Java
- 14. Wix - SQL parentesi quadre in file binari
- 15. Significato di parentesi quadre doppie in bash
- 16. Conversione/accesso ai valori QueryString in ASP.NET
- 17. Accesso array associativi in PHP
- 18. C++ utilizzando parentesi quadre con puntatore all'istanza
- 19. PHP: Array ai valori dei parametri delle funzioni variabili
- 20. Accesso ai tubi Codice PHP
- 21. Qual è la differenza tra array di parentesi quadre e array di puntatori?
- 22. Riempimento di array con valori senza loop in PHP
- 23. Regex per ottenere le parentesi quadre contengono solo numeri, ma non sono tra parentesi quadre si
- 24. Python - accesso ai valori nidificati nei dizionari
- 25. Accesso ai dati degli Hive usando Python
- 26. PHP per cambiare i valori degli array originali
- 27. Riorganizzare chiavi degli array php
- 28. Get slash se non entro parentesi quadre
- 29. Significato del testo tra parentesi quadre
- 30. Javascript - Restituisce la stringa tra parentesi quadre
php fa riferimento a questo come riferimento all'array di funzioni. È stato incluso in PHP dalla versione 5.4 http://php.net/manual/en/migration54.new-features.php – Steve