0

特定の値を検索して兄弟の値を取得する必要がある大きな多次元配列があります。

の値を検索する場合29、これが のキーに属していることを確認する必要がありますid。これが見つかったら、labelキーの値が必要です。これらのキーは両方とも、ネストされた同じ配列に属しています。

例えば:

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

この例では、 に属する 29 を検索し、その値をid返します。labelSpecial Notes

これに加えて、それはもう少し複雑になります..

検索している値に が含まれているdecimal場合、これもキーに属しますidが、複数の場所で言及されています。それgrandparentが属しているキーは、検証される必要があるinputsため、検証されたら、(id の兄弟である) label の値を取得します。

例えば:

["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

私があなたの主張を誤解していなければ、これはあなたを助けるでしょう:-

 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 に答える
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 に答える