变量是数组但不可数?
Variable is an array but not countable?
我正在将我们的 Codeigniter (v. 3.1.11) 站点从 php 5.6 升级到 php 7.2(当前 运行 在我的 Mac 上的本地主机上)。慢慢地,我找到了 count() 用法的所有实例并更正了它们。据我了解,数组是可数的,但我似乎无法计算数据库调用后 Codeigniter 的 result_array() 函数返回的数组....
我控制器的以下部分
$reviews = $this->reviews_model->review_details($productname);
echo "Variable is type: ".gettype($reviews);
if (count($reviews >=1)) {
$myreview=$reviews[0];
} else {
$myreview=0;
}
return $myreview;
在我的模型中调用这个函数(请注意,我正在回显变量类型只是为了确定!)
function review_details($pagename) {
$r = false;
$sql = "select Reviews.*, ReviewItemLink.Item as Product, ReviewItemLink.* from Reviews LEFT JOIN ReviewItemLink ON Reviews.ReviewItemID=ReviewItemLink.ReviewItemID where pagename=? AND ReviewActive = 1 ORDER BY Date DESC";
$query = $this->db->query($sql, $pagename);
if ($query->num_rows() > 0):
$r = $query->result_array();
endif;
return $r;
}
即使变量是数组
Variable is type: array
我现在仍然收到非常熟悉的警告消息:
Severity: Warning
Message: count(): Parameter must be an array or an object that implements Countable
Filename: controllers/Software.php
Line Number: 1005
Backtrace:
File: /Users/juner/Sites/html/application/controllers/Software.php
Line: 1005
Function: _error_handler
File: /Users/juner/Sites/html/application/controllers/Software.php
Line: 75
Function: _get_my_review
File: /Users/juner/Sites/html/index.php
Line: 324
Function: require_once
是否有不可数的数组类型?任何 suggestions/ideas 都是最有帮助的!
这部分不正确(打字错误?):
if (count($reviews >=1)) {
$myreview=$reviews[0];
} else {
$myreview=0;
}
您正在向计数函数传递一个布尔值。 count($reviews >=1)
转为count(true)
;这就是你收到警告的原因。
if (count($reviews >=1)) {
应该是 if (count($reviews) >=1 ) {
我正在将我们的 Codeigniter (v. 3.1.11) 站点从 php 5.6 升级到 php 7.2(当前 运行 在我的 Mac 上的本地主机上)。慢慢地,我找到了 count() 用法的所有实例并更正了它们。据我了解,数组是可数的,但我似乎无法计算数据库调用后 Codeigniter 的 result_array() 函数返回的数组....
我控制器的以下部分
$reviews = $this->reviews_model->review_details($productname);
echo "Variable is type: ".gettype($reviews);
if (count($reviews >=1)) {
$myreview=$reviews[0];
} else {
$myreview=0;
}
return $myreview;
在我的模型中调用这个函数(请注意,我正在回显变量类型只是为了确定!)
function review_details($pagename) {
$r = false;
$sql = "select Reviews.*, ReviewItemLink.Item as Product, ReviewItemLink.* from Reviews LEFT JOIN ReviewItemLink ON Reviews.ReviewItemID=ReviewItemLink.ReviewItemID where pagename=? AND ReviewActive = 1 ORDER BY Date DESC";
$query = $this->db->query($sql, $pagename);
if ($query->num_rows() > 0):
$r = $query->result_array();
endif;
return $r;
}
即使变量是数组
Variable is type: array
我现在仍然收到非常熟悉的警告消息:
Severity: Warning
Message: count(): Parameter must be an array or an object that implements Countable
Filename: controllers/Software.php
Line Number: 1005
Backtrace:
File: /Users/juner/Sites/html/application/controllers/Software.php
Line: 1005
Function: _error_handler
File: /Users/juner/Sites/html/application/controllers/Software.php
Line: 75
Function: _get_my_review
File: /Users/juner/Sites/html/index.php
Line: 324
Function: require_once
是否有不可数的数组类型?任何 suggestions/ideas 都是最有帮助的!
这部分不正确(打字错误?):
if (count($reviews >=1)) {
$myreview=$reviews[0];
} else {
$myreview=0;
}
您正在向计数函数传递一个布尔值。 count($reviews >=1)
转为count(true)
;这就是你收到警告的原因。
if (count($reviews >=1)) {
应该是 if (count($reviews) >=1 ) {