PHP Array, get the key based on a value

If I have this array

$england = array(
        'AVN' => 'Avon',
        'BDF' => 'Bedfordshire',
        'BRK' => 'Berkshire',
        'BKM' => 'Buckinghamshire',
        'CAM' => 'Cambridgeshire',
        'CHS' => 'Cheshire'
);

I want to be able to get the three letter code from the full text version, how would i write the following function:

$text_input = 'Cambridgeshire';
function get_area_code($text_input){
    //cross reference array here
    //fish out the KEY, in this case 'CAM'
    return $area_code;
}

thanks!

Answers


Use array_search():

$key = array_search($value, $array);

So, in your code:

// returns the key or false if the value hasn't been found.
function get_area_code($text_input) {
    global $england;
    return array_search($england, $text_input);
}

If you want it case insensitive, you can use this function instead of array_search():

function array_isearch($haystack, $needle) {
   foreach($haystack as $key => $val) {
       if(strcasecmp($val, $needle) === 0) {
           return $key;
       }
   }
   return false;
}

If you array values are regular expressions, you can use this function:

function array_pcresearch($haystack, $needle) {
   foreach($haystack as $key => $val) {
       if(preg_match($val, $needle)) {
           return $key;
       }
   }
   return false;
}

In this case you have to ensure all values in your array are valid regular expressions.

However, if the values are coming from an <input type="select">, there's a better solution: Instead of <option>Cheshire</option> use <option value="CHS">Cheshire</option>. Then the form will submit the specified value instead of the displayed name and you won't have to do any searching in your array; you'll just have to check for isset($england[$text_input]) to ensure a valid code has been sent.


Need Your Help

CCLabelTTF character interval

iphone ios cocos2d-iphone

Can we set interval in pixels between characters in text using CCLabelTTF in iOS cocos2d? Any ideas about it?

Google search on customer entered keyword in PHP

php web-crawler google-search

I have a UI where customer enters combination(key word description of a product) of keywords. Using those key words I want to get results using google in my site. In short, I'm using google to search

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.