• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1397
  • Last Modified:

how to cast a variable in a foreach loop?

Hi,
i'm trying to loop through a list of float values and compare them.
turns out i can't use regular type casting in a foreach loop.

i looked around but i couldn't find any way i can actually cast there.
maybe there's a trick?
any help is greatly appreciated.


here's my code:


$zDate = 1.19; // debug.
		$zodiacs = array (
				0.00 => "Sagittarius",
				1.20 => "Capricorn",
				2.19 => "Auarius",
				3.21 => "Pisces",
				4.20 => "Aries",
				5.21 => "Taurus",
				6.21 => "Gemini",
				7.23 => "Cancer",
				8.23 => "Leo",
				9.23 => "Virgo",
			   10.24 => "Libra",
			   11.22 => "Scorpio",
			   12.22 => "Sagittarius",
		);
		
		foreach ($zodiacs as $key =>$value)
//		foreach ($zodiacs as (float)$key =>$value) was my first reaction, but that does not work.
		{
			$fkey = (float)$key;   //even this doesn't work
			if($zDate > $fkey)
			{
//$fkey will always be a rounded value here. e.g. 1, 2, or 3, ect...
				$zodiacName = $value;
				continue;
			}
			
		}

Open in new window

0
nOOgz
Asked:
nOOgz
  • 2
1 Solution
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
please try this:
    $zodiacs = array (
                        "0.00" => "Sagittarius",
                        "1.20" => "Capricorn",
                        "2.19" => "Auarius",
                        "3.21" => "Pisces",
                        "4.20" => "Aries",
                        "5.21" => "Taurus",
                        "6.21" => "Gemini",
                        "7.23" => "Cancer",
                        "8.23" => "Leo",
                        "9.23" => "Virgo",
                     "10.24" => "Libra",
                     "11.22" => "Scorpio",
                     "12.22" => "Sagittarius",
            );

Open in new window

0
 
hieloCommented:
you need "string" keys, not floats - then do the cast:
$zDate = 1.19; // debug.
            $zodiacs = array (
                        "0.00" => "Sagittarius",
                        "1.20" => "Capricorn",
                        "2.19" => "Auarius",
                        "3.21" => "Pisces",
                        "4.20" => "Aries",
                        "5.21" => "Taurus",
                        "6.21" => "Gemini",
                        "7.23" => "Cancer",
                        "8.23" => "Leo",
                        "9.23" => "Virgo",
                     "10.24" => "Libra",
                     "11.22" => "Scorpio",
                     "12.22" => "Sagittarius"
            );

Open in new window

0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
the problem is that any numerical value is considered a array index, and not a array key information, hence implicitly casted as int
0
 
nOOgzAuthor Commented:
totally. duh .. thank you so much :)
0

Featured Post

Take Control of Web Hosting For Your Clients

As a web developer or IT admin, successfully managing multiple client accounts can be challenging. In this webinar we will look at the tools provided by Media Temple and Plesk to make managing your clients’ hosting easier.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now