PHP函数奇怪数组返回
我有这个功能:PHP函数奇怪数组返回,php,Php,我有这个功能: function Test ($test) { [...] if ( $res->num_rows == 0 ) return "BAD"; $magic_array = array(); while ( $row = $res->fetch_assoc() ) $magic_array[] = $row["hex_stream"];
function Test ($test)
{
[...]
if ( $res->num_rows == 0 )
return "BAD";
$magic_array = array();
while ( $row = $res->fetch_assoc() )
$magic_array[] = $row["hex_stream"];
return $magic_array;
}
如果我尝试:
$result_array = Test($test);
var_dump($result_array);
它打印:
array(3) {
[0]=>
string(8) "FFD8FFE1"
[1]=>
string(8) "FFD8FFE0"
[2]=>
string(8) "FFD8FFE8"
}
string(3) "BAD"
Test()似乎同时返回$magic_数组和“BAD”
为什么会这样
谢谢您的test()被调用了两次
第一次从var_dump获得结果时
第二次你变坏是因为
if ( $res->num_rows == 0 ) {
return "BAD";
}
在if和while语句中使用{}是一种很好的做法您的var_dump()是否在循环中,并且可能被调用两次?不可能<代码>返回立即终止正在其中执行的函数。你不可能从一个函数“返回”而在该函数中继续执行更多的代码。您可能调用了两次Test,其中第二次调用的结果为0行。我只调用了一次函数,在var_dump()之后,我已经放了一个出口(1),所以这不是问题。您如何调用Test()$result_array=Test($Test);你为什么要投反对票。它显然被调用了两次,因为你有一个回报……想想看,事实上,你喜欢花括号并不意味着它是错误的使用无,它肯定不会导致这个错误我只是说这是一个良好的做法,从来没有提到这是它不工作的原因。如果你仔细阅读我的回复,你会看到我说它被调用了两次,如果我在最后一次返回之前将var_dump()放在Test()函数中,它会显示ok,但在函数之外它似乎是串联数组+“BAD”对不起,我读到了“第二次在你身上变差,因为在if和while语句中使用{}是一种很好的做法”