My stackoverflow answer #3

by krike in Other / Q&A on 06 Sep 2010


Each week I feature one of my answers on stackoverflow hoping it might help other people.

The question

This weeks question by Sergio:

I want to use php array for HTML select list. In this case it will be the list of countries but beside of country name that is listed in drop down list I need as a value of each country short country code.

The php array that I’m currently using looks like:

$wcr=array(
'Angola',
'Antigua & Barbuda',
'Armenia', 
'Austria',
'Azerbaijan', 
 .....
 );

The PHP page that using this array:

<select name="country"><option selected value=""> --------- 
<? $p=1;asort($wcr);reset($wcr);
while (list ($p, $val) = each ($wcr)) {
echo '<option value="'.$p.'">'.$val;
} ?>
</select>

The value should be short country code (something like ‘ES’, ‘US’, ‘AN’, …) instead of numbers that I have right now as a values in this form. That short country codes I will write in this same PHP array somewhere, if it’s possible.

How can I do that?

My anwser

Use foreach(), it’s the best function to loop through arrays

your array should look like this:

 $wcr=array(
 "ANG" = > 'Angola',
 "ANB" = > 'Antigua & Barbuda',
 "ARM" = > 'Armenia', 
 "AUS" = > 'Austria',
 "AZB" = > 'Azerbaijan'
  );

<select name="country">
<option value="">-----------------</option>
<?php
foreach($wcr as $key => $value):
echo '<option value="'.$key.'">'.$value.'</option>'; //close your tags!!
endforeach;
?>
</select>

I also made some minor adjustements to your html code. The first option in the list will be selected by default so no need to specify it 😉

Written by krike

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet nisl nisl. Ut interdum libero vitae quam ultricies et lacinia elit aliquet. Praesent tincidunt, sem tempus feugiat feugiat, turpis tellus scelerisque erat, sit amet feugiat neque arcu ac lectus. Sed at mi et elit interdum scelerisque vitae eu felis.

krike has written 77 posts.