- ret_val = deref_impl_val(ret_val, var);
- for (i = 0; i < var->arg->var->array_size; ++i) {
- impl_val *ptr = iterate(ret_val, t, i, &tmp);
+ if (var->arg->var->array_size) {
+ /* to_array(foo[NUMBER]) */
+ for (i = 0; i < var->arg->var->array_size; ++i) {
+ impl_val *ptr = iterate(ret_val, t, i, &tmp);
+
+ switch (t) {
+ case PSI_T_FLOAT:
+ ZVAL_DOUBLE(&ele, (double) ptr->fval);
+ break;
+ case PSI_T_DOUBLE:
+ ZVAL_DOUBLE(&ele, ptr->dval);
+ break;
+ default:
+ ZVAL_LONG(&ele, ptr->lval);
+ break;
+ }