【发布时间】:2020-09-17 23:48:20
【问题描述】:
php-ml 循环变量中的哪里总是错误 array_unshift 像这样:
Fatal error: Uncaught TypeError: array_unshift() expects parameter 1 to be array, string given in C:\xampp\htdocs\prediksi\assets\main system\vendor\php-ai\php-ml\src\Phpml\Regression\LeastSquares.php:100 Stack trace: #0 C:\xampp\htdocs\prediksi\assets\main system\vendor\php-ai\php-ml\src\Phpml\Regression\LeastSquares.php(100): array_unshift('[2018, 1, 1], [...', 1) #1 C:\xampp\htdocs\prediksi\assets\main system\vendor\php-ai\php-ml\src\Phpml\Regression\LeastSquares.php(81): Phpml\Regression\LeastSquares->getSamplesMatrix() #2 C:\xampp\htdocs\prediksi\assets\main system\vendor\php-ai\php-ml\src\Phpml\Regression\LeastSquares.php(42): Phpml\Regression\LeastSquares->computeCoefficients() #3 C:\xampp\htdocs\prediksi\admin\modul\show_predict.php(40): Phpml\Regression\LeastSquares->train(Array, Array) #4 C:\xampp\htdocs\prediksi\admin\index.php(85): require('C:\\xampp\\htdocs...') #5 {main} thrown in C:\xampp\htdocs\prediksi\assets\main system\vendor\php-ai\php-ml\src\Phpml\Regression\LeastSquares.php on line 100
为什么会这样?
有我的循环代码:
$query1 = "SELECT * FROM master_data";
$result1 = mysqli_query($conn, $query1);
$data1 = "";
while($row1 = mysqli_fetch_array($result1)){
$TH=number_clean($row1['TH']);
$B=$row1['B'];
$data1 .= "[".$row1["T"].", ".$B.", ".$TH."], ";
}
$data1 = substr($data1, 0, -2);
$query2 = "SELECT * from master_data";
$result2 = mysqli_query($conn, $query2);
$data2 = "";
while($row2 = mysqli_fetch_array($result2)){
$data2 .= "".$row2["Penjualan"].", ";
}
$data2 = substr($data2, 0, -2);
$tgl=$_POST['tgl'];
$dat1=$_POST['data1'];
$dat2=$_POST['data2'];
$samples = [$dat1];
$targets = [$dat2];
$regression = new LeastSquares();
$regression->train($samples, $targets);
$result = round($regression->predict([$t, $b, $th]));
echo $t."<br>";
echo $b."<br>";
echo $th."<br>";
echo $result."<br>";
结果是我的问题
当我使用手册时(一一插入)它可以工作
为什么会这样?
【问题讨论】:
-
原因就在错误中:当 array_unshift 函数需要一个数组时,您正在为它提供一个字符串
-
我必须怎么做才能清除错误?
-
循环数组还是什么?我对此感到困惑
-
把代码贴到你调用array_unshift()的地方
-
三思而后行。最初,您显示的代码不包括错误消息的来源。然后您发布附加代码作为答案而不是编辑您的原始帖子(在更多人反对之前删除该答案),现在您添加附加代码作为评论而不是将其添加到原始帖子中。你让人们很难帮助你。另外,看看如何将字符串添加到数组中,以及之后如何将数组转换为字符串。这将使您的代码更易于阅读,并避免您必须删除最后一个逗号。