我正在尝试在数组中搜索元素(在本例中为“电子”),然后返回嵌套值。
我正在使用的数组
array:2 [▼
0 => array:2 [▼
"value" => "0241-6230"
"type" => "print"
]
1 => array:2 [▼
"value" => "2339-1623"
"type" => "electronic"
]
]
下面是我正在使用的代码。
<?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);
}
我期望的输出
$this->issn = "2339-1623"
答案 0 :(得分:6)
您可以使用laravel集合:
collect($array)->where('type', 'electronic')->first();
输出为:
array:2 [
"value" => "2339-1623"
"type" => "electronic"
]
答案 1 :(得分:0)
您可以使用简单的foreach循环,将匹配的元素添加到结果数组中
$filtered = [];
foreach($myarr as $i){
if($i['type'] == 'searched type')
$filtered[] = $i;
}
或者当遇到给定类型的第一个元素时,您可以跳出循环
foreach($myarr as $i){
if($i['type'] == 'searched type')
return $i; // or $found = $i and then break;
}
答案 2 :(得分:-1)
您必须使用foreach
循环
$searchterm = 'electronics';
foreach($nested as $key => $value) {
if($value['type'] == $searchterm) {
return $value['value'];
break;
}
}
答案 3 :(得分:-1)
PHP方式:
$searchingFor = 'electronic';
$filteredArray = array_filter($initialArray, function($v, $k) use ($searchingFor) {
return $searchingFor === $v['type'];
}, ARRAY_FILTER_USE_BOTH);
//var_dump($filteredArray);
Docs。