in_array()期望参数2是数组,null中给出

时间:2017-10-11 11:59:06

标签: php arrays popen

我正在尝试运行一个命令,当结果发生变化时输出结果。但是,我一直收到in_array() expects parameter 2 to be array, resource given in错误。

这是我的代码:

$call = "~/www/reteps.tk/go/kahoot-auto " . '262671' . " " . 'bob' . " ";
$result = array();
$old_result = array(0 => "something");

$handle = popen($call, "r");
$result = file($handle); #is this how I read the results?
while (in_array("end",$result) != true) {
  sleep(1); 
  if ($result != $old_result) {
    echo($result);
    $old_result = $result;
  }   
}

完整错误日志:

PHP Warning:  file() expects parameter 1 to be a valid path, resource given in /home/retep/www/reteps.tk/school/kahoot2.php on line 70
PHP Warning:  in_array() expects parameter 2 to be array, null given in /home/retep/www/reteps.tk/school/kahoot2.php on line 71
PHP Warning:  in_array() expects parameter 2 to be array, null given in /home/retep/www/reteps.tk/school/kahoot2.php on line 71
PHP Warning:  in_array() expects parameter 2 to be array, null given in /home/retep/www/reteps.tk/school/kahoot2.php on line 71

4 个答案:

答案 0 :(得分:0)

您必须将文件的路径(可能是$call)放在file函数中,然后放置一个资源($result

答案 1 :(得分:0)

你能提供$ call的价值吗?该错误似乎表明它是一个资源而不是一个路径。 popen()需要一个$命令:

http://php.net/manual/en/function.popen.php

所以$ call应该是某种字符串,无论是Linux命令还是可执行文件路径。现在$ call似乎是一个资源,所以路径或命令可能是资源的INSIDE,你只需要指向该值而不是资源本身。

答案 2 :(得分:0)

//我的代码

$r=array(10.5,11,45,78,85,90);

if(in_array(4,$r)) {
    echo "number is found";
} else {
    echo "number is not found";
}

答案 3 :(得分:0)

系统找不到为文件指定的路径。因此,$ result不会获得任何价值。在数组的下一个语句中,第二个参数需要数组,但$ result不是数组,因为路径无效。

您的数组代码很好。只需检查文件的路径。它会解决你的问题。