我有这个错误:
警告:strlen()期望参数1为字符串,数组在第159行的/includes/functions/general.php中给出
在档案中:
function tep_get_all_get_params($exclude_array = '') {
global $HTTP_GET_VARS;
if (!is_array($exclude_array)) $exclude_array = array();
$get_url = '';
if (is_array($HTTP_GET_VARS) && (sizeof($HTTP_GET_VARS) > 0)) {
reset($HTTP_GET_VARS);
while (list($key, $value) = each($HTTP_GET_VARS)) {
if ( (strlen($value) > 0) && ($key != tep_session_name()) && ($key != 'error') && (!in_array($key, $exclude_array)) && ($key != 'x') && ($key != 'y') ) { // THIS IS 159 LINE
$get_url .= $key . '=' . rawurlencode(stripslashes($value)) . '&';
}
}
}
return $get_url;
}
有人可以帮我这个吗?
答案 0 :(得分:0)
问题是您致电each
。它返回一个包含4个元素的数组:
元素0和键包含数组元素的键名,1和值包含数据。
这意味着$key
会按预期分配键名,但会为$value
分配一个包含3个索引为'key', 1, and 'value'
的元素的数组。
解决此问题的最简单方法是更改此行:
while (list($key, $value) = each($HTTP_GET_VARS)) {
到
foreach ($HTTP_GET_VARS as $key => $value) {
请注意,您可以删除该行:
reset($HTTP_GET_VARS);
因为使用foreach时不需要。另请注意,自PHP4.1.0起,$HTTP_GET_VARS
已弃用,您应将其替换为$_GET
。