douba4275 2014-03-12 20:19
浏览 17
已采纳

php-多维数组搜索

I have a multidimensional countries array containing :

  • code -> Country Code
  • name - > Country Name
  • flag -> CSS sprite flag class

The needle is a countryCode and haystack the $countriesArray. How would you search for a string(countryCode) and return the corresponding name and flag. Is this array badly constructed?.

Array

$CountriesArray = array(array( code => "bj", 
                               name => "Benin",
                               flag => "flag flag-bj"
                            ),

                        array( code => "bw", 
                               name => "Botswana",
                               flag => "flag flag-bw"
                            ),

                        array( code => "cg", 
                               name => "Congo",
                               flag => "flag flag-cg"
                             )
  ect....

  );

ANSWER -Array format updated where the key is the countryCode

$CountriesArray = array(  array( bj => array( name=> "Benin", flag => "flag flag-bj" )), 
                          array( bw => array( name=> "Botswana", flag => "flag flag-bw" )),
                          array( cg => array( name=> "Congo", flag => "flag flag-cg" ))
                   );

Search array where $n = needle

function multiDimenArraySearch($n,$h){
foreach($h as $key => $value){
if($key == $n) return $value;
  }
}

$n = "bj";
$search = multiDimenArraySearch($n,$CountriesArray);

$name = $search[$n]["name"]; //outputs name
$flag = $search[$n]["flag"]; // outputs flag class
  • 写回答

2条回答 默认 最新

  • dongmaoluan5719 2014-03-12 20:25
    关注
    for($i = 0; $i <= count($countriesArray); $i++){
        if($countriesArray[$i]["code"] == "cg"){
            return $countriesArray[$i]["name"];
        }
    }
    

    this should work

    foreach version:

    foreach($countriesArray as $country){
        if($country["code"] == "cg"){
            ...
        }
    }
    

    Example function:

    function multiDimenArraySearch($n,$h){
        foreach($h as $arr){
            if($arr['code'] == $n){
                return $arr;
            }
        }
    }
    
    $search = multiDimenArraySearch("cg",$countriesArray);
    $name = $search["name"];
    

    For search value is array key:

    foreach($h as $key => $value){
        if($key == "cg") return $value;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染