2011-12-13 85 views
-1

我怎么能打印此阵var_dump($files);产生这种打印这样的数组?

array 
'Arrow' => 
array 
    'Custom' => 
    array 
     'original' => 
     array 
      ... 
     'thumbs' => 
     array 
      ... 
    'Standard' => 
    array 
     'original' => 
     array 
      ... 
     'thumbs' => 
     array 
      ... 
'Borders' => 
array 
    'Corners' => 
    array 
     'original' => 
     array 
      ... 
     'thumbs' => 
     array 
      ... 
    'Embellished Outline' => 
    array 
     'original' => 
     array 
      ... 
     'thumbs' => 
     array 
      ... 
    'Simple Outline' => 
    array 
     'original' => 
     array 
      ... 
     'thumbs' => 
     array 
      ... 
    'Solid' => 
    array 
     'original' => 
     array 
      ... 
     'thumbs' => 
     array 
      ... 
    0 => string 'cannon.gif' (length=10) 

我要像箭输出/自定义/大拇指/ 053_17_HandLeft.gif

+0

由于您没有具体说明您希望或期望输出的结果,所以我已经低调了。你期望看到什么,你真正看到了什么。 – Layke

+0

我想你应该指定你的问题。你的输出应该如何看待?已经尝试过'print_r'? – Turbotoast

+1

“印刷”是什么意思? –

回答

1

尝试XDebug,它取代的var_dump显示得那样,包括语法着色和缩进。

+1

啊,对,我虽然很熟悉。的确,这是XDebug的错。阅读[这里](http://xdebug.org/docs/display)。 –

0

尝试print_r($files);。也许这将扩大所有阵列。

1

对于漂亮的轻量级调试,Kint完成这项工作。 Xdebug非常棒,但是如果只是用于漂亮的打印或var_dump替换,安装似乎有点矫枉过正。

1

看来你想从某个递归目录结构输出文件路径列表。此功能应该有所帮助:

function createPaths(array $files, $prefix = '') { 
    $paths = array(); 

    foreach ($files as $folder => $file) { 
     if (is_array($file)) { 
      $subPaths = createPaths($file, $prefix . $folder . '/'); 
      $paths = array_merge($paths, $subPaths); 
     } else { 
      $paths[] = $prefix . $file; 
     } 
    } 

    return $paths; 
} 

$files = array(
    'Corners' => array(
     'original' => array(
      '1.jpg', 
      '2.gif', 
     ), 
    ), 
    'foo.jpg' 
); 

var_dump(createPaths($files));