我有一个目录,其内容保存在我的数据库中的文件和子目录名称,现在我已经尝试选择所有子目录名称,所以我可以在sql选择查询中使用它,但我的问题是选定的目录显示像这样cssjspageimages
。
如何用逗号和引号分隔每个目录名称,也不在姓氏中添加逗号?
我希望它看起来像'css','js','page','images'
<?php
$dirs = array_filter(glob('*'), 'is_dir');
if(!empty($dirs)){
$listdirs = '';
foreach ($dirs as $fileinfo){
$result = end(explode('/', $fileinfo));
$listdirs .= $result;
echo $listdirs;
}
}
?>
奖金问题
在我获得子文件和dir之类的'css','js','page','images'
后,我还将添加主根目录示例'root','css','js','page','images'
这是我的代码
<?php
$cb = basename(dirname(__FILE__)); //the current base name
$root = "'".$cb."',"
echo $root . $listdirs;
?>
现在如果根目录是空的怎么办?它仍将在root的末尾添加逗号,我将在sql select中出错。 我怎么能解决这个问题
答案 0 :(得分:1)
也许这个:
<?php
$dirs = array_filter(glob('*'), 'is_dir');
if (!empty($dirs)) {
$listdirs = '';
foreach ($dirs as $fileinfo) {
$result = end(explode('/', $fileinfo));
$listdirs .= '\'' . $result . '\','; /* Enclose the $result in quotes (') and append a comma (,) */
}
$listdirs = rtrim($listdirs, ','); /* Strip the trailling comma */
echo $listdirs;
}
编辑(回答问题编辑):
<?php
$cb = basename(dirname(__FILE__)); //the current base name
$root = "'".$cb."'" . ($listdirs ? "," . $listdirs : ""); /* Check if $listdirs contains anything... if so, append a comma (,) and $listdirs... otherwise append nothing. */
echo $root;
答案 1 :(得分:1)
如果原始问题中的任务和后续“奖励”问题可以合并,我建议将glob()返回的数据保存为数组,而不是立即将其转换为字符串。
另请注意:
如果这一切听起来都可行,那么这似乎就是你想要的:
$listdirs = "";
$dirs = glob('*', GLOB_ONLYDIR );
$cb = basename(dirname(__FILE__));
if( $cb )
array_unshift( $dirs, $cb );
if( count( $dirs ) )
$listdirs = "'" . implode( $dirs, "','" ) . "'";
答案 2 :(得分:0)
正如John Conde所说,你真的很亲密:)
$listdirs .= "'". $result ."',";
在循环之后,不要忘记删除此字符串的最后一个字符(最后一个逗号):
$listdirs = substr($listdirs,0,-1);
我认为你的&#34; echo $ listdirs;&#34;也应该在循环之外。