Re: foreach on a 3d array

From: 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:
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>";
} }
What you want is something like this: foreach ($languages as $language => $valueArray ){ if ( strstr( $_HTTP_ACCEPT_LANGUAGE, $language) ) {
       print"<center>You are from ".$valueArray[2]."!</center>";
} } Your example is setting the variable $language to the array for each iteration.
Thanks, I see what I was missing.
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/
Why not just do if(isset($language[$_HTTP_ACCEPT_LANGUAGE])) {
    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
ofcourse, that should've read: $languages = array( "af" => array("Afrikaans", "Afrikaans", "South Africa"),
	"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>';
}

« previous php.general (#243634) next »