我有一个大的多维数组,我需要在其中搜索某个值并检索一个兄弟值。
如果我搜索29
的值,我需要确保它属于id
的键。找到后,我需要label
键的值。这两个键都属于同一个嵌套数组。
例如:
[26]=>
array(54) {
["id"]=>
string(2) "29"
["label"]=>
string(13) "Special Notes"
在此示例中,我搜索属于id
的29,返回label
的值Special Notes
除此之外,它确实变得更加复杂..
如果我要搜索的值包含decimal
,这也属于键id
,但在多个地方提到了它。它所属的grandparent
密钥必须为inputs
,因此一旦验证,就会检索label的值(这是id的兄弟)。
例如:
["inputs"]=>
array(3) {
[0]=>
array(2) {
["id"]=>
string(4) "12.1"
["label"]=>
string(4) "Name"
}
[1]=>
array(2) {
["id"]=>
string(4) "12.2"
["label"]=>
string(5) "Price"
}
[2]=>
array(2) {
["id"]=>
string(4) "12.3"
["label"]=>
string(8) "Quantity"
}
}
在此示例中,如果我搜索12.1
,则会返回Name
- 确保所有这些都属于inputs
提前致谢
答案 0 :(得分:1)
这里有一个简单的例子。也许它会有所帮助......
$search_val = "12.1"; // value to search for
foreach($inputs as $key=>$value){
foreach($value as $keyassoc=>$val){
if($keyassoc=="id"){
if($val==$search_val){
echo "found: ".$inputs[$key]["label"];
}
}
}
}
答案 1 :(得分:0)
您只需过滤掉阵列
即可$inputs = array(
0 => array("id" => "12.1","label" => "Name"),
1 => array("id" => "12.2","label" => "Price"),
2 => array("id" => "12.3","label" => "Quantity"));
$s = "12.1" ; // what you want
$input = array_filter($inputs,function($v)use($s){ return $v['id'] == $s;});
var_dump($input);
输出
array
0 =>
array
'id' => string '12.1' (length=4)
'label' => string 'Name' (length=4)
答案 2 :(得分:0)
如果我的意思不对,那么这对你有帮助: -
function searchLabel($inputs,$search)
foreach($inputs as $input){
if($input['id']==$search){
return $input['label'];
}
}
$label = searchLabel($inputs,12.1);