Hi,
settype() should be able to handle "boolean" as a target type, but the
docs don't mention this.
<para>
Possibles values of <parameter>type</parameter> are:
<itemizedlist>
<listitem>
<simpara>"integer"</simpara>
</listitem>
<listitem>
<simpara>"double"</simpara>
</listitem>
<listitem>
<simpara>"string"</simpara>
</listitem>
<listitem>
<simpara>"array"</simpara>
</listitem>
<listitem>
<simpara>"object"</simpara>
</listitem>
</itemizedlist>
</para>
and ext/standard/basic_functions.c:
PHP_FUNCTION(settype)
{
pval **var, **type;
char *new_type;
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &var,
&type) ==
FAILURE) {
WRONG_PARAM_COUNT;
}
convert_to_string_ex(type);
new_type = Z_STRVAL_PP(type);
if (!strcasecmp(new_type, "integer")) {
convert_to_long(*var);
} else if (!strcasecmp(new_type, "double")) {
convert_to_double(*var);
} else if (!strcasecmp(new_type, "string")) {
convert_to_string(*var);
} else if (!strcasecmp(new_type, "array")) {
convert_to_array(*var);
} else if (!strcasecmp(new_type, "object")) {
convert_to_object(*var);
} else if (!strcasecmp(new_type, "boolean")) {
convert_to_boolean(*var);
} else if (!strcasecmp(new_type, "resource")) {
php_error(E_WARNING, "settype: cannot convert to
resource type");
RETURN_FALSE;
} else {
php_error(E_WARNING, "settype: invalid type");
RETURN_FALSE;
}
RETVAL_TRUE;
}
Ulf