Notice: Array to string conversion
虽然说这不是错误,但是我还是想让它不提示这个警告,不要给我说配置错误级别function arr_to_str($arrdata){
static $result_str='';
$result_str .= implode('|', $arrdata);//这行报错
foreach($arrdata as $k => $v){
if(is_array($v)){
// $result_str .= implode('|', $v);
arr_to_str($v);
}else
$result_str = $result_str;
}
$result_str = str_replace('Array', '', $result_str);
return $result_str;
}

解决方案 »

  1.   

    你这代码什么意思?     参数$arrdata可以array  可以string?
      

  2.   

    $result_str .= implode('|', $arrdata);
    Notice: Array to string conversion
    是说 参与运算的数组($arrdata)不是一维数组
    修改错误级别并不能改变现状,至多是第2维以后变成 Array保证传入数据的正确性,是程序员的事情
      

  3.   

    /*
    两种方式解决,最省事的就是在报错的哪行前端加个@,不过不推荐,因为我认为还是解决错误是最好的办法,错误的原因:看意思你给出的可能是超过二维的数组数据,那么你implode的话就会报错,因为$arrdata的子依然是一个数组,而implode()作用的数组的子应该是整型或者字符串,改成如下试一试:
    */
    function arr_to_str($arrdata) {
        static $result_str = '';
        foreach($arrdata as $k => $v){
        if(is_array($v)){
            arr_to_str($v);
        } else {
            $result_str .= implode('|', $arrdata); // <<移到这里
        }
        $result_str = str_replace('Array', '', $result_str);
        return $result_str;
    }
      

  4.   

    function arr_to_str($arrdata) {
        static $result_str = '';
        foreach($arrdata as $k => $v){
            if(is_array($v)){
                arr_to_str($v);
            } else {
                $result_str .= '|' . $v;
            }
        }
        $result_str = str_replace('Array', '', ltrim($result_str, '|'));
        return $result_str;
    }
    $arrdata = array(
        array('a', 'b', 'c'),
        array('d', 'e', 'f'),
        array(array(1, 2, 3))
    );echo arr_to_str($arrdata);
    /**
    不知道是你想要的结果吗?
    输出:a|b|c|d|e|f|1|2|3
    */
      

  5.   

    我已经说了,回避问题不是解决问题的办法
    $ar = array(
        array('a', 'b', 'c'),
        array('d', 'e', 'f'),
        array(array(1, 2, 3))
    );
    echo @implode('|', $ar);得到 Array|Array|Array所以需要自行保证数据的正确性,或扩展原有的函数
    $ar = array(
        array('a', 'b', 'c'),
        array('d', 'e', 'f'),
        array(array(1, 2, 3))
    );
    echo m_implode('|', $ar);function m_implode($ch, &$ar) {
      foreach($ar as &$v) {
        if(is_array($v)) $v = m_implode($ch, $v);
      }
      return implode($ch, $ar);
    }a|b|c|d|e|f|1|2|3