Ho il seguente array JSON, in questo caso ha solo tre voci, ma potrebbe esserci anche di più.JSON: immissione voce con valore specifico
[
{
"id": 45,
"text": "apple"
},
{
"id": 37,
"text": "pear"
},
{
"id": 22,
"text": "strawberry"
}
]
Ora la mia domanda è: come faccio ad avere il text
variabile della voce con (per esempio) id
essendo 37
in PHP? È possibile farlo facilmente?
quello che so: ho potuto utilizzare un ciclo for per trovare il testo come questo (in PHP):
<?php
$fruits = json_decode(file_get_contents("file.json"), true); // First I decode the file
for ($i = 0; $i < count($fruits); $i++) {
// Using this for loop and if condition, I get the text I need
if ($fruits[$i]['id'] == 37) echo $fruits[$i]['text'];
}
?>
Ma io non voglio usare un ciclo for, come la mia matrice JSON ha più di 3 voci e se richiedo molti dati in breve tempo ci vuole molto tempo prima che il ciclo for passi attraverso ogni voce. Quindi c'è un modo più efficace per ottenere lo stesso risultato? Qualcuno può spiegarmi questo in PHP?
Penso che devi usare qualsiasi tipo di loop per ottenere le tue informazioni. Si potrebbe usare 'array_filter()' ma questo fa anche un ciclo interno. – TiMESPLiNTER
La maggior parte delle soluzioni suggerite di seguito utilizzano internamente un ciclo (per), quindi non saranno significativamente più veloci della soluzione suggerita. Nel caso in cui sia necessario cercare i dati 'json' più volte, suggerirei di archiviarli come' chiave' 'valore' con' id' come chiave. Questo è già stato suggerito più volte. – Wilt
Controllate la struttura dati Dejori David?Potresti rendere gli elementi ordinati per id quando crei i dati JSON? se è così, è possibile applicare la ricerca binaria su di esso. – Klaus