Re: foreach on a 3d array
| From: | M.Sokolewicz | Date: | Tue, 24 Oct 2006 21:58:05 +0000 |
| Subject: | Re: foreach on a 3d array | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-243634@lists.php.net to get a copy of this message | ||
M.Sokolewicz wrote:
Dotan Cohen wrote:ofcourse, that should've read: $languages = array( "af" => array("Afrikaans", "Afrikaans", "South Africa"),On 24/10/06, Chris Boget <chris.boget@wild.net> wrote:$languages = array( "af" => array("Afrikaans", "Afrikaans", "South Africa"),"sq" => array("Albanian", "Shqipe", "Albania") );foreach ($languages as $language){ if ( strstr( $_HTTP_ACCEPT_LANGUAGE, $language) ) {print"<center>You are from ".$language[2]."!</center>";} }Why not just do if(isset($language[$_HTTP_ACCEPT_LANGUAGE])) {What you want is something like this: foreach ($languages as $language => $valueArray ){ if ( strstr( $_HTTP_ACCEPT_LANGUAGE, $language) ) {Thanks, I see what I was missing.print"<center>You are from ".$valueArray[2]."!</center>";} } Your example is setting the variable $language to the array for each iteration.So the first iteration, $language is set to array("Afrikaans", "Afrikaans", "South Africa") and the second iteration, $language is set to array("Albanian", "Shqipe", "Albania")That much I knew. Thanks, Chris. Dotan Cohen http://essentialinux.com/ http://technology-sleuth.com/print '<center>You are from '.$language[$_HTTP_ACCEPT_LANGUAGE][3].'!</center>';} else {print '<center>where are you from?!</center>';} using strstr is pretty slow, and considering you made the indices correspond to the actual value you're checking em for... this is a lot faster ^^ (and cleaner IMO) - tul
"sq" => array("Albanian", "Shqipe", "Albania") );
if(isset($languages[$_HTTP_ACCEPT_LANGUAGE])) {
print '<center>You are from'.$language[$_HTTP_ACCEPT_LANGUAGE][3].'!</center>'; } else {
print '<center>where are you from?!</center>';}