警告:strlen()期望参数1是字符串,给定数组

时间:2011-08-31 15:12:16

标签: php warnings strlen

  

可能重复:
  mysql_fetch_array() expects parameter 1 to be resource, boolean given in select

我将我的网站转移到新主机上。以前的php版本是5.2,现在是5.3。 在我更改了php版本之后,它几乎每个页面都会显示警告:

strlen() expects parameter 1 to be string, array given

错误行是此函数的第三行:

function implodestr($arr,$field) {
    unset($out_str);
    if (!is_array($arr) || !$arr || strlen($arr)==0)  return 0; //error line
    foreach($arr as $k=>$v) {
        $out_str.= $v[$field].","; 
    }
    $str = trim($out_str,",");
    $str ? "": $str=0;
    return $str;
}

3 个答案:

答案 0 :(得分:6)

您需要使用count()而不是strlen()来获取数组中的元素数量。

但是,你根本不需要任何东西。空数组将在此之前评估为FALSE!$arr),因此不需要进行此检查。

这就是我写函数的方法(编辑):

function implodestr ($arr, $field) {
  // Make sure array is valid and contains some data
  if (!$arr || !is_array($arr)) return FALSE;
  // Put the data we want into a temporary new array
  $out = array();
  foreach ($arr as $v) if (isset($v[$field])) $out[] = $v[$field];
  // Return the data CSV, or FALSE if there was no valid data
  return ($out) ? implode(',',$out) : FALSE;
}

答案 1 :(得分:4)

您应该使用count()来获取数组的大小:

if (!is_array($arr) || !$arr || count($arr)==0)  return 0;

答案 2 :(得分:1)

如果要检查空数组,则需要count(),而不是strlen,这确实是字符串。