【问题标题】:PHP Search Multidimensional Array for ValuePHP 搜索多维数组的值
【发布时间】:2017-02-22 16:34:51
【问题描述】:

我有以下数组:

Array ( 
    [0] => Array ( [Country] => Americas [Out_Count] => 14 ) 
    [1] => Array ( [Country] => Belgium [Out_Count] => 2 ) 
    [2] => Array ( [Country] => China [Out_Count] => 33 ) 
    [3] => Array ( [Country] => France [Out_Count] => 7 ) 
)

我有一个变量如下:

$los = 'Belgium';

我想做的是搜索数组并将Out_Count 的值带回一个变量。

我可以使用以下内容:

$key = array_search($los, array_column($outs, 'Country'));

这带回了 Key,在本例中为比利时的 1,但我需要 Out_Count 值,我完全不知道如何实现这一点。

欢迎任何想法和想法。

【问题讨论】:

  • 如果$los = 'Belgium'; 那么$los[0] 表示B 而不是Belgium
  • 实现这一目标 print $outs[$key]['Out_Count'];
  • Country 在数组中是否唯一?
  • 并非总是如此,不!现在正在努力解决这个问题!

标签: php arrays multidimensional-array


【解决方案1】:

array_column()的不错选择!只需提取一个以Country 为键、Out_Count 为值的数组:

$los = 'Belgium';
$result = array_column($outs, 'Out_Count', 'Country')[$los];

按照自己的方式去做:

$los = 'Belgium';
$key = array_search($los, array_column($outs, 'Country'));
$result = $outs[$key]['Out_Count'];

或者:

$result = $outs[array_search($los, array_column($outs, 'Country'))]['Out_Count'];

【讨论】:

    【解决方案2】:

    试试这个:

    $array = array(
      array('Country' => 'Americas', 'Out_Count' => 14),
      array('Country' => 'Belgium', 'Out_Count' => 2),
      array('Country' => 'China', 'Out_Count' => 33),
      array('Country' => 'France', 'Out_Count' => 7)
    );
    
    
    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;
    }
    

    输出:

    $Out_Count = search($array, 'Country', 'Belgium');
    echo $Out_Count[0]['Out_Count'];   //print 2
    
    $Out_Count = search($array, 'Country', 'France');
    echo $Out_Count[0]['Out_Count'];  //print 7
    

    这样,你就有了你搜索过的完整数组,你就可以访问它了。

    print_r($Out_Count);
    
    Array
    (
     [0] => Array
        (
            [Country] => Belgium
            [Out_Count] => 2
        )
    
     )
    

    【讨论】:

      【解决方案3】:

      你可以这样写你的自定义函数

      function my_custom_array_search($array, $search)
      {
         foreach($array as $single)
         {
           if($single['Country']==$search)
           {
              return $single['Out_Count'];
           }
         }
         return '';
      }
      

      【讨论】:

        猜你喜欢
        • 2011-10-03
        • 2011-05-20
        • 2017-07-23
        • 2019-09-13
        • 2014-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多