PHP中的数组到字符串转换错误
我有以下代码来回溯错误…但是PHP中的数组到字符串转换错误,php,Php,我有以下代码来回溯错误…但是 $traces = debug_backtrace(); foreach ($traces as $k => $v) { if ($v['function'] == 'include' || $v['function'] == 'include_once' || $v['function'] == 'require_once' || $v['function'] == 'require')
$traces = debug_backtrace();
foreach ($traces as $k => $v)
{
if ($v['function'] == 'include'
|| $v['function'] == 'include_once'
|| $v['function'] == 'require_once'
|| $v['function'] == 'require')
{
$args = '';
if (isset($v['args']) && is_array($v['args']))
{
$size = count($v['args']);
foreach ($v['args'] as $key => $arg)
{
$args .= $v['args'][$key];
if($key < $size)
{
$args .= ', ';
}
}
}
$traces .= '#' . $k . ' '
. $v['function']
. '('.$args.') called at ['
. $v['file'].':'.$v['line'].']';
}
else
{
$function = (array_key_exists('function',$v)) ?
$v['function'].'() ' : 'function_name';
$file = (array_key_exists('file',$v)) ?
$v['file'] : 'file_name';
$line = (array_key_exists('line',$v)) ?
$v['line'] : 'line';
$traces .= "#{$k} $function called at {$file}:{$line}\n";//This line giving me notice...
}
}
我实际上想把这个数组转换成字符串。是否有任何方法或函数可以在不通知我的情况下进行转换
如何更正此问题?您可以从以下内容开始:
foreach($traces as $k=>$v) <- $traces here is an array
foreach($k=>v)您没有正确创建数组
$args .= $v['args'][$key];
您正在创建一个字符串
$args = array();
if(isset($v['args']) && is_array($v['args']))
{
$size = count($v['args']);
foreach ($v['
args'] as $key => $arg)
{
array_push($args,$v['args'][$key]);
// some of your code
}
这里有点不对劲$trace是一个调试回溯数组。当您foreach($traces)。。。这似乎没有定义。然后您附加到$traces,它应该是一个非标量来表示它
只需正确命名变量,并使名称不同 $function
、$file
或$line
是一个数组…dweeves是正确的。。如果我的假设是正确的,那么您并不想对$traces数组和正在构建的字符串使用相同的变量名Yes man。。只是尽量避免太多的变量。。这不是个好主意吗way@troy为什么要将数组附加为字符串$traces.=。。。?所以你有$traces.=换成$traces_sz.=看看会发生什么。并用$traces_sz=''预先声明它。
$args .= $v['args'][$key];
$args = array();
if(isset($v['args']) && is_array($v['args']))
{
$size = count($v['args']);
foreach ($v['
args'] as $key => $arg)
{
array_push($args,$v['args'][$key]);
// some of your code
}
$trace = debug_backtrace();
foreach($traces as ...)