<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jason Mooberry &#187; shenanigans</title>
	<atom:link href="http://blog.jasonmooberry.com/tag/shenanigans/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jasonmooberry.com</link>
	<description>Stuff I did for you.</description>
	<lastBuildDate>Sat, 29 Oct 2011 23:41:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.2</generator>
		<item>
		<title>PHP cast as array</title>
		<link>http://blog.jasonmooberry.com/2010/07/php-cast-as-array-and-why-returning-null-is-useful/</link>
		<comments>http://blog.jasonmooberry.com/2010/07/php-cast-as-array-and-why-returning-null-is-useful/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 23:19:04 +0000</pubDate>
		<dc:creator>Jason Mooberry</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[casting]]></category>
		<category><![CDATA[shenanigans]]></category>

		<guid isPermaLink="false">http://blog.jasonmooberry.com/?p=68</guid>
		<description><![CDATA[PHP is full of shenanigans.  If you know them you can code more efficiently.  If you don&#8217;t it can make for a mess.  One of the lesser used, but useful tricks is casting as array. If you&#8217;re not familiar with casting, check the docs:  http://php.net/manual/en/language.types.type-juggling.php Here&#8217;s a quick breakdown of what happens when you cast [...]]]></description>
			<content:encoded><![CDATA[<p>PHP is full of shenanigans.  If you know them you can code more efficiently.  If you don&#8217;t it can make for a mess.  One of the lesser used, but useful tricks is casting as array.</p>
<p>If you&#8217;re not familiar with casting, check the docs:  <a href="http://php.net/manual/en/language.types.type-juggling.php">http://php.net/manual/en/language.types.type-juggling.php</a></p>
<p>Here&#8217;s a quick breakdown of what happens when you cast to array:</p>
<pre class="brush: php">
php > var_dump((array)false);
array(1) {
  [0]=>
  bool(false)
}
php > var_dump((array)null);
array(0) {
}
php > var_dump((array)0);
array(1) {
  [0]=>
  int(0)
}
php > var_dump((array)"");
array(1) {
  [0]=>
  string(0) ""
}
php > var_dump((array)array());
array(0) {
}
php > var_dump((array)new StdClass);
array(0) {
}
php > class TestIterator implements IteratorAggregate {
php >   public function getIterator() {
php >     return new ArrayIterator(array(1,2,3));
php >   }
php > }
php > $a = new TestIterator;
php > var_dump((array)$a);
array(0) {
}
php > foreach ($a as $num) { echo $num,"\n"; }
1
2
3
</pre>
<p>The interesting bits here are that null, empty array and empty object all cast to empty array.  Even an Iterator.  Since the Iterator object is empty is casts to an empty array, even though iterating through it will produce 3 elements.  Any other value casts to an array with a single element that is the value.  </p>
<p>There&#8217;s a couple use cases I&#8217;d like to highlight from this list.  Flexibility in signature params, and easier iteration:</p>
<pre class="brush: php">
function string_replace($string,$elements) {
  foreach((array)$elements as $element) {
    $pos = strpos($string,'?');
    if ($pos !== false) {
      $string = substr_replace($string,$element,$pos,1);
    }
  }
  return $string;
}
</pre>
<p>This is just a simple function for replacing question marks in a string with supplied string(s).  By casting $elements as an array we can take a single param or an array of params without checking for it in our code.  We can also passively return the string untouched if null params are supplied. </p>
<pre class="brush: php">
php > echo string_replace('the name is ?','jason');
the name is jason
php > echo string_replace('? ? ? at swingers',array('in','the','evening'));
in the evening at swingers
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.jasonmooberry.com/2010/07/php-cast-as-array-and-why-returning-null-is-useful/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.050 seconds -->

