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;
}
虽然说这不是错误,但是我还是想让它不提示这个警告,不要给我说配置错误级别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;
}
Notice: Array to string conversion
是说 参与运算的数组($arrdata)不是一维数组
修改错误级别并不能改变现状,至多是第2维以后变成 Array保证传入数据的正确性,是程序员的事情
两种方式解决,最省事的就是在报错的哪行前端加个@,不过不推荐,因为我认为还是解决错误是最好的办法,错误的原因:看意思你给出的可能是超过二维的数组数据,那么你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;
}
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
*/
$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