I was recently trying to loop through some objects and convert them to arrays so that I could encode them to json strings.
I was running into issues when an element of one of my objects was a SoapClient. As it turns out, json_encode() doesn't like any resources to be passed to it. My simple fix was to use is_resource() to determine whether or not the variable I was looking at was a resource.
I quickly realized that is_resource() returns false for two out of the 3 resources that are typically in a SoapClient object. If the resource type is 'Unknown' according to var_dump() and get_resource_type(), is_resource() doesn't think that the variable is a resource!
My work around for this was to use get_resource_type() instead of is_resource(), but that function throws an error if the variable you're checking isn't a resource.
So how are you supposed to know when a variable is a resource if is_resource() is unreliable, and get_resource_type() gives errors if you don't pass it a resource?
I ended up doing something like this:
<?php
function isResource ($possibleResource) { return !is_null(@get_resource_type($possibleResource)); }
?>
The @ operator suppresses the errors thrown by get_resource_type() so it returns null if $possibleResource isn't a resource.
I spent way too long trying to figure this stuff out, so I hope this comment helps someone out if they run into the same problem I did.