Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

how to cast a variable in a foreach loop?

Posted on 2008-10-01
4
Medium Priority
?
1,396 Views
Last Modified: 2012-05-05
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
Comment
Question by:nOOgz
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 143

Accepted Solution

by:
Guy Hengel [angelIII / a3] earned 1000 total points
ID: 22617596
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
 
LVL 82

Expert Comment

by:hielo
ID: 22617614
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
 
LVL 143

Expert Comment

by:Guy Hengel [angelIII / a3]
ID: 22617618
the problem is that any numerical value is considered a array index, and not a array key information, hence implicitly casted as int
0
 
LVL 1

Author Closing Comment

by:nOOgz
ID: 31502109
totally. duh .. thank you so much :)
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I imagine that there are some, like me, who require a way of getting currency exchange rates for implementation in web project from time to time, so I thought I would share a solution that I have developed for this purpose. It turns out that Yaho…
Originally, this post was published on Monitis Blog, you can check it here . In business circles, we sometimes hear that today is the “age of the customer.” And so it is. Thanks to the enormous advances over the past few years in consumer techno…
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
Suggested Courses

604 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question