我正在尝试从文件夹内的文件夹中获取文件名(文件夹内有一个名为1的../merchant_assets/文件夹,我正在尝试获取该文件夹内的所有名称文件)下面的代码工作正常,但是当我将包含结果的数组分配$temp给stdClass()变量$container时,当我尝试在函数外部打印出数组时,它变为空,print_r($container->screenshots)但如果我在函数内部打印它,它就可以工作<?php include 'config.php';$url = "http://" . $_SERVER['HTTP_HOST'] . '/merchant_assets/';$target = '../merchant_assets';$merchant_id = 1;$container = new stdClass();$folder = '';// Call the functiondir_contents_recursive($target);// Get all screenshots images from merchant_assets folder based on merchant_idfunction dir_contents_recursive($dir) { // open handler for the directory global $container; $iter = new DirectoryIterator($dir); $temp = Array(); foreach( $iter as $item ) { // make sure you don't try to access the current dir or the parent if ($item != '.' && $item != '..') { if( $item->isDir() ) { // call the function on the folder global $merchant_id, $folder; if($merchant_id == $item->getFilename()) { $folder = $item->getFilename(); dir_contents_recursive("$dir/$item"); }else continue; } else { // print files global $url, $folder; $current_index = count($temp); $temp[$current_index] = $url . $folder . '/' . $item->getFilename(); } } } $container->screenshots = $temp; print_r($container->screenshots); // It shows the results}// Handle response$response = $container;print_r($container->screenshots); // No results???$response_json = json_encode($response);echo $response_json;?>我希望输出为 [ 我有意将每个索引的值更改为item]Array ( [0] => item [1] => item [2] => item [3] => item
1 回答
波斯汪
TA贡献1811条经验 获得超4个赞
问题是您的递归调用未将数据分配给$temp
.
在你的函数开始时,你 decleare $temp = Array();
- 但你永远不会在他身上使用 global 。
所以第一次调用的函数$temp
是空数组并且if( $item->isDir() )
是 TRUE 所以它进入递归。在那里你添加元素$temp
并分配$container->screenshots
(这样打印效果很好)。
但是,在退出递归调用后,您再次分配$temp
给$container->screenshots
但在此范围内$temp
是空数组!(没有结果)。
我强烈建议不要在这里使用 global 而是返回文件数组作为递归函数的返回参数。
- 1 回答
- 0 关注
- 161 浏览
添加回答
举报
0/150
提交
取消