在我宣布的文件顶部
$final = array();
然后我得到了以下功能
function delivery($optional = null){
global $db;
//$return = $_POST;
if(!empty($optional['reportdate_from'])) {
//$return1['from'] = $optional['reportdate_from'];
}
if(!empty($optional['reportdate_to'])) {
//$return1['from'] = $optional['reportdate_from'];
}
$sth = $db->prepare("SELECT DATE(date) Date, COUNT(number) totalCOunt FROM numbers GROUP BY DATE(date)");
$sth->execute();
$result = $sth->fetchAll();
$return1['name'] = 'W doręczeniu';
foreach ($result as $row1) {
$date1 =strtotime($row1['Date'])*1000;
$return1['data'][] = array($date1, (int)$row1['totalCOunt']);
}
return array_push($final,$return1);
// echo json_encode($final,true);
}
function delivered($optional){
global $db;
$return = $_POST;
if(!empty($optional['reportdate_from'])) {
//$return1['from'] = $optional['reportdate_from'];
}
if(!empty($optional['reportdate_to'])) {
//$return1['to'] = $optional['reportdate_to'];
}
$sth = $db->prepare("SELECT DATE(date) Date, COUNT(number) totalCOunt FROM numbers Where `return` = 1 AND rdate != '0000-00-00 00:00:00' GROUP BY DATE(date)");
$sth->execute();
$result = $sth->fetchAll();
$return1['name'] = 'Doręczone';
foreach ($result as $row1) {
$date1 =strtotime($row1['Date'])*1000;
$return1['data'][] = array($date1, (int)$row1['totalCOunt']);
}
return array_push($final,$return1);
}
在我得到的文件的最底部:
echo json_encode($final,true);
总输出为[]无属性 并且警告:array_push()期望参数1为数组,在
中给出null所有数组都不为null,只有在array_push(ed)
时才会发生调用函数。
case "test": delivery($optional); break;
case "test1": delivered($optional); break;
为什么会出现此错误?
答案 0 :(得分:1)
你的函数里面没有global $final
,所以你定义为数组的全局$ final在你的函数内超出范围/不可见/不存在。
return array_push($final,$return1);
这一行将创建一个 NEW 本地$ final,将$ return1加到其上,然后将该新数组返回给调用上下文。而且由于你不会在任何地方捕获返回值,因此数组只会被扔进垃圾箱。
如果你有这样的事情:
case "test": array_push($final, delivery($optional)); break;
然后你的代码就可以了
答案 1 :(得分:0)
你在函数中添加$ final,但与javascript不同,php不知道全局变量,除非你"包含"它们在您的函数中使用关键字global
或将它们作为参数传递(我更喜欢)