0

我有一个大型多维数组,我需要在其中搜索某个值并检索同级值。

如果我搜索 的值29,我需要确保它属于 的键id。一旦找到,我需要label密钥的值。这两个键都属于同一个嵌套数组。

例如:

[26]=>
array(54) {
  ["id"]=>
  string(2) "29"
  ["label"]=>
  string(13) "Special Notes"  

在这个例子中,我搜索 29,它属于一个id,返回它的值labelSpecial Notes

除此之外,它确实变得有点复杂..

如果我正在搜索的值包含 a decimal,这也属于 key id,但是在多个地方都提到了它。它所属的grandparent键必须inputs经过验证,因此一旦验证,就检索标签的值(它是 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

提前致谢

4

3 回答 3

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"];
            }
         }
   }
}
于 2012-10-30T10:23:13.410 回答
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)
于 2012-10-30T09:59:08.963 回答
0

如果我没有理解您的观点,那么这将对您有所帮助:-

 function searchLabel($inputs,$search)
    foreach($inputs as $input){
      if($input['id']==$search){
      return $input['label'];
      }
    }
    $label = searchLabel($inputs,12.1);
于 2012-10-30T10:25:10.087 回答