警告:strlen()期望参数1是字符串,第159行的/includes/functions/general.php中给出的数组

时间:2018-04-27 23:01:53

标签: php string parameters warnings strlen

我有这个错误:

  

警告: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;
  }

有人可以帮我这个吗?

1 个答案:

答案 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