Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数奇怪数组返回_Php - Fatal编程技术网

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语句中使用{}是一种很好的做法”