【问题标题】:Searching for a value inside an array and getting the array在数组中搜索值并获取数组
【发布时间】:2013-02-26 02:14:12
【问题描述】:

我正在尝试使用数组来搜索数组内部的值,然后获取该值所在的完整数组并将其添加到数组中。下面是从中获取值的数组:

Array (
    [0] => Array ( [ID] => 138 [dimmer] => 5 [order] => 1 [double] => 0 [location1] => DSR [location2] => Stage Pockets ) 
    [1] => Array ( [ID] => 139 [dimmer] => 6 [order] => 1 [double] => 0 [location1] => DSR [location2] => Stage Pockets )
    [2] => Array ( [ID] => 140 [dimmer] => 7 [order] => 2 [double] => 0 [location1] => DSR [location2] => Stage Pockets )
    [3] => Array ( [ID] => 141 [dimmer] => 8 [order] => 2 [double] => 0 [location1] => DSR [location2] => Stage Pockets )
)

我正在尝试使用下面的搜索功能获取dimmer 的值:

function search($array, $key, $value)
{
  $results = array();

  if (is_array($array))
  {
      if (isset($array[$key]) && $array[$key] == $value)
          $results[] = $array;

      foreach ($array as $subarray)
          $results = array_merge($results, search($subarray, $key, $value));
  }

  return $results;
}

下面它使用$chan 值,它是一个整数,以使用上面的函数来搜索数组。然后foreach 应该通过$patch 的数组并从上面的数组中选择数组(仅返回一个空数组),尽管它不会这样做,除非您使用字符串更改$patch_single['dimmer']比如"7"

  $patch = search($patch, 'Channel', $chan);
  foreach ($patch as $patch_single) {
    print_r($patch_single);
    $dim_single = intval($patch_single['dimmer']);
    echo $dim_single;
    $dimmers = search($dimmers, 'dimmer', $dim_single);
  }

用于获取$patch_single['dimmer'] 的数组在foreach 内时为:

Array ( [ID] => 241 [Channel] => 100 [dimmer] => 7 )
Array ( [ID] => 242 [Channel] => 100 [dimmer] => 25 )

感谢您的建议。

【问题讨论】:

    标签: php arrays search


    【解决方案1】:

    嗯,我看到你有二维数组。为什么你不使用这个?

    foreach($array as $row) { 
        if ($row['dimmer'] == $myValue) { $newArray[] = $row; } 
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      $arr       = Array (Array ( "ID" => 138, "dimmer" => 5, "order" => 1, "double" => 0, "location1" => "DSR", "location2" => "Stage Pockets" ), 
                          Array ( "ID" => 139, "dimmer" => 6, "order" => 1, "double" => 0, "location1" => "DSR", "location2" => "Stage Pockets" ),
                          Array ( "ID" => 140, "dimmer" => 7, "order" => 2, "double" => 0, "location1" => "DSR", "location2" => "Stage Pockets" ),
                          Array ( "ID" => 141, "dimmer" => 8, "order" => 2, "double" => 0, "location1" => "DSR", "location2" => "Stage Pockets" ));
      
      $arr       = array_filter($arr, function($ar) {
         return ($ar['dimmer'] == '7' );
      });
      echo "<pre>";
      print_r($arr);
      

      输出:

      Array
      (
          [2] => Array
              (
                  [ID] => 140
                  [dimmer] => 7
                  [order] => 2
                  [double] => 0
                  [location1] => DSR
                  [location2] => Stage Pockets
              )
      
      )
      

      参考:http://php.net/manual/en/function.array-filter.php

      【讨论】:

        猜你喜欢
        • 2012-03-05
        • 2011-01-30
        • 2012-12-08
        • 2019-09-20
        • 2015-03-24
        • 2015-06-15
        • 2012-06-02
        • 2012-10-18
        • 2018-06-24
        相关资源
        最近更新 更多