2012-10-18 44 views
0
字符串轉換錯誤

我有下面的代碼來回溯錯誤....但其Array對PHP

$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... 

    } 


} 

我得到通知的陣列字符串轉換這裏:

$traces .= "#$k $function called at $file:$line\n"; 

我其實想把這個數組轉換成字符串。有沒有任何方法或功能可以在不給我任何通知的情況下進行轉換...

如何更正此問題?

+0

「$ function」,「$ file」或「$ line」都是一個數組... – Squazic

回答

1

你開始:

foreach($traces as $k=>$v) <- $traces here is an array 

然後嘗試做

$traces.= "xxx" <- $traces here is handled as a string 

我寧願定義聚合文本內容的$ tracestr字符串。

+0

dweeves是正確的..如果我的假設是正確的,那麼您不是故意使用相同的變量名稱$痕跡陣列和您正在構建 –

+0

唯唯諾諾的人..只是試圖避免許多變數..字符串是不是一個好辦法 – troy

0

沒有創建陣列正確

$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 
       } 
0
$trace = debug_backtrace(); 
foreach($traces as ...) 

這裏有什麼不對。 $ trace是一個Debug Backtrace數組。雖然你foreach($痕跡) ...這似乎未定義。你追加到$痕跡這應該是一個非標量來foreach它。

只要正確地命名您的變量,並使名稱不同!

+0

其實我糾正它...它實際上是$痕跡... – troy

+0

@troy爲什麼你追加到一個數組,就像它是一個字符串$ traces。= ...?所以你有$ trace的地方。=改爲$ traces_sz。=然後看看會發生什麼。並用$ traces_sz =''預先聲明它。 – CodeAngry