J'essaye de rechercher un tableau pour un élément (dans ce cas «électronique»), puis de renvoyer la valeur imbriquée.
Le tableau avec lequel je travaille
$this->issn = "2339-1623"
Voici le code que j'utilise.
<?php
$this->doi = 'anydoinumber';
$this->client = new Client();
$this->Url = 'https://api.crossref.org/works/:'.$this->doi;
$res = $this->client->get($this->Url);
$decoded_items = json_decode($res->getBody(), true);
if (isset($decoded_items['message']['issn-type'])) {
$this->issn = '';
} else {
// no electronic ISSN given
Log.Alert('No electronic ISSN for :'.$this->Doi);
}
Le sortie que j'attends
array:2 [â¼
0 => array:2 [â¼
"value" => "0241-6230"
"type" => "print"
]
1 => array:2 [â¼
"value" => "2339-1623"
"type" => "electronic"
]
]
4 Réponses :
Vous pouvez utiliser une simple boucle foreach qui ajoute des éléments correspondants à un tableau de résultats
foreach($myarr as $i){
if($i['type'] == 'searched type')
return $i; // or $found = $i and then break;
}
ou vous pouvez sortir de la boucle lorsque vous rencontrez le premier élément d'un type donné
XXX
Vous pouvez utiliser la collection laravel:
array:2 [ "value" => "2339-1623" "type" => "electronic" ]
Et le résultat est:
collect($array)->where('type', 'electronic')->first();
Vous pouvez en savoir plus sur la collection Laravel ici
@ user5067291 Peut-être avez-vous besoin de get () au lieu de first () ? Précisez s'il vous plaît.
Si vous avez besoin de plusieurs objets de collection, utilisez get (). Mais si vous voulez obtenir un seul objet de la collection, utilisez first ().
Vous devez utiliser la boucle foreach
$searchterm = 'electronics';
foreach($nested as $key => $value) {
if($value['type'] == $searchterm) {
return $value['value'];
break;
}
}
Manière PHP:
$searchingFor = 'electronic';
$filteredArray = array_filter($initialArray, function($v, $k) use ($searchingFor) {
return $searchingFor === $v['type'];
}, ARRAY_FILTER_USE_BOTH);
//var_dump($filteredArray);
Pouvez-vous montrer le code que vous avez et un exemple de la sortie que vous attendez?
Veuillez ajouter ceci à votre question plutôt que de le mettre dans les commentaires :)