Re: [PHP] Boolean Parameter to 3 Options?
2009/4/29 Matt Neimeyer m...@neimeyer.org: On Wed, Apr 29, 2009 at 1:30 PM, Shawn McKenzie nos...@mckenzies.net wrote: Philip Thompson wrote: On Apr 29, 2009, at 11:42 AM, Matt Neimeyer wrote: I have a function that currently takes a boolean value as a parameter. But now I want to expand it to 3 options... So if I have... function doFooBar($doFoo = false) { if($doFoo) { echo Did Foo; } else { echo Did Bar; } } Is it as simple as changing it like follows to avoid having to change existing code that won't use the new values. function doFooBar($doFoo = 0) { if($doFoo == 2) { echo Did Baz; } else if($doFoo == 1) { echo Did Foo; } else { echo Did Bar; } } Something about that disturbs me. Perhaps because any time I think Oh it will be as simple as... it usually isn't. Thanks in advance! Matt Unless you're doing a strict comparison (===), it probably won't make a lot of difference. However, if you sent true to the function, I believe it will reach the last else condition. You may revisit all the locations you call it and update them appropriately. Those are my initial thoughts ~Philip No, true will match the first condition. If you're using true and false now and just want to add a second option then continue using true/false. Don't mix and match. 1 == true and 2 == true. function doFooBar($doFoo = false) { if($doFoo === 2) { //something } elseif($doFoo === true) { //something true } elseif($doFoo === false) { //something false } } Ah. I somehow missed the direction of the typecasting. Not that the documentation isn't completely explicit on the matter but for some reason I was thinking that the bool got cast to 1 or 0... not that the string/number got cast to a bool (following the standards there). Good to know. Thanks Matt -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php Another way ... ?php define ('OPTION_NONE', 0); define ('OPTION_ALL', -1); // Options are defined with the value of 1, 2, 4, 8, 16, 32, etc. define ('OPTION_1', 1); define ('OPTION_2', 2); define ('OPTION_3', 4); function foo($i_Options = OPTION_NONE) { if ($i_Options OPTION_1) { echo 'Option 1 chosen', PHP_EOL; } // Note single if ($i_Options OPTION_2) { echo 'Option 2 chosen', PHP_EOL; } // Note single if ($i_Options OPTION_3) { echo 'Option 3 chosen', PHP_EOL; } // Note single } foo(); foo(OPTION_ALL); foo(OPTION_1 | OPTION_3); ? outputs ... Option 1 chosen Option 2 chosen Option 3 chosen Option 1 chosen Option 3 chosen -- - Richard Quadling Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498r=213474731 Standing on the shoulders of some very clever giants! -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Boolean Parameter to 3 Options?
On Apr 29, 2009, at 11:42 AM, Matt Neimeyer wrote: I have a function that currently takes a boolean value as a parameter. But now I want to expand it to 3 options... So if I have... function doFooBar($doFoo = false) { if($doFoo) { echo Did Foo; } else { echo Did Bar; } } Is it as simple as changing it like follows to avoid having to change existing code that won't use the new values. function doFooBar($doFoo = 0) { if($doFoo == 2) { echo Did Baz; } else if($doFoo == 1) { echo Did Foo; } else { echo Did Bar; } } Something about that disturbs me. Perhaps because any time I think Oh it will be as simple as... it usually isn't. Thanks in advance! Matt Unless you're doing a strict comparison (===), it probably won't make a lot of difference. However, if you sent true to the function, I believe it will reach the last else condition. You may revisit all the locations you call it and update them appropriately. Those are my initial thoughts ~Philip -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Boolean Parameter to 3 Options?
Philip Thompson wrote: On Apr 29, 2009, at 11:42 AM, Matt Neimeyer wrote: I have a function that currently takes a boolean value as a parameter. But now I want to expand it to 3 options... So if I have... function doFooBar($doFoo = false) { if($doFoo) { echo Did Foo; } else { echo Did Bar; } } Is it as simple as changing it like follows to avoid having to change existing code that won't use the new values. function doFooBar($doFoo = 0) { if($doFoo == 2) { echo Did Baz; } else if($doFoo == 1) { echo Did Foo; } else { echo Did Bar; } } Something about that disturbs me. Perhaps because any time I think Oh it will be as simple as... it usually isn't. Thanks in advance! Matt Unless you're doing a strict comparison (===), it probably won't make a lot of difference. However, if you sent true to the function, I believe it will reach the last else condition. You may revisit all the locations you call it and update them appropriately. Those are my initial thoughts ~Philip No, true will match the first condition. If you're using true and false now and just want to add a second option then continue using true/false. Don't mix and match. 1 == true and 2 == true. function doFooBar($doFoo = false) { if($doFoo === 2) { //something } elseif($doFoo === true) { //something true } elseif($doFoo === false) { //something false } } -- Thanks! -Shawn http://www.spidean.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Boolean Parameter to 3 Options?
On Wed, Apr 29, 2009 at 1:30 PM, Shawn McKenzie nos...@mckenzies.net wrote: Philip Thompson wrote: On Apr 29, 2009, at 11:42 AM, Matt Neimeyer wrote: I have a function that currently takes a boolean value as a parameter. But now I want to expand it to 3 options... So if I have... function doFooBar($doFoo = false) { if($doFoo) { echo Did Foo; } else { echo Did Bar; } } Is it as simple as changing it like follows to avoid having to change existing code that won't use the new values. function doFooBar($doFoo = 0) { if($doFoo == 2) { echo Did Baz; } else if($doFoo == 1) { echo Did Foo; } else { echo Did Bar; } } Something about that disturbs me. Perhaps because any time I think Oh it will be as simple as... it usually isn't. Thanks in advance! Matt Unless you're doing a strict comparison (===), it probably won't make a lot of difference. However, if you sent true to the function, I believe it will reach the last else condition. You may revisit all the locations you call it and update them appropriately. Those are my initial thoughts ~Philip No, true will match the first condition. If you're using true and false now and just want to add a second option then continue using true/false. Don't mix and match. 1 == true and 2 == true. function doFooBar($doFoo = false) { if($doFoo === 2) { //something } elseif($doFoo === true) { //something true } elseif($doFoo === false) { //something false } } Ah. I somehow missed the direction of the typecasting. Not that the documentation isn't completely explicit on the matter but for some reason I was thinking that the bool got cast to 1 or 0... not that the string/number got cast to a bool (following the standards there). Good to know. Thanks Matt -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php