【发布时间】:2013-04-22 10:42:53
【问题描述】:
我有一个 PHP 函数:
function unserialize_recursive($data, $i = 0) {
$unserialized = unserialize($data);
if ($unserialized) {
$i++;
}
if (!is_string($unserialized) || unserialize($unserialized) === FALSE) {
/* placeholder - see explanation below */
return array($i, $unserialized);
} elseif (unserialize($unserialized) !== FALSE) {
unserialize_recursive($unserialized, $i);
}
return FALSE;
}
我调用这个函数:
$data = unserialize_recursive($serialized_string);
var_dump($data);
但是var_dump($data) 的输出是bool(false)。
但是,如果我在文本 /* placeholder - see explanation below */ 的位置添加 var_dump($unserialized),我会得到预期的输出。
那么为什么我不能返回那个变量 ($unserialized)?如果我在函数中使用gettype(),它会返回array。
我使用的是 Netbeans,所有语法高亮显示代码格式正确,没有拼写错误。我很困惑。我错过了一些非常明显的事情吗?
【问题讨论】:
-
你为什么用
FALSE而不是false? -
我想你忘记了退货。您可能还需要通过引用传入 $i 参数。
-
@Dai:虽然这个问题无关紧要,我怀疑你是否真的感兴趣,但答案是出于可读性原因我使用大写版本。