php中使用单引号和逗号分隔名称
我有一个目录,它的内容保存在我的数据库中,包括文件和子目录名,现在我尝试选择所有子目录名,以便在sql select查询中使用它,但我的问题是所选目录显示如下php中使用单引号和逗号分隔名称,php,arrays,directory,Php,Arrays,Directory,我有一个目录,它的内容保存在我的数据库中,包括文件和子目录名,现在我尝试选择所有子目录名,以便在sql select查询中使用它,但我的问题是所选目录显示如下cssjspageimages。 如何用逗号和引号分隔每个目录名,并且在姓氏中不添加逗号? 我希望它看起来像'css'、'js'、'page'、'images'的示例 <?php $dirs = array_filter(glob('*'), 'is_dir'); if(!empty($dirs)){ $listdirs = '';
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;
}
}
?>
现在,如果根目录为空怎么办?它仍然会在根的末尾添加逗号,我会在sql select中得到错误。
我怎样才能解决这个问题呢?可能是:
<?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
$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;
}
正如约翰·康德(John Conde)所说,你真的很接近:)
不要忘记在循环之后删除此字符串的最后一个字符(最后一个逗号):
$listdirs = substr($listdirs,0,-1);
我认为你的“echo$listdirs;”也应该在循环之外。正如约翰·康德所说,你真的很接近:)
不要忘记在循环之后删除此字符串的最后一个字符(最后一个逗号):
$listdirs = substr($listdirs,0,-1);
我认为您的“echo$listdirs;”也应该在循环之外。如果原始问题和后续“奖金”问题中的任务可以合并,我建议将glob()返回的数据保留为数组,而不是立即将其转换为字符串
还请注意:
- 您可以将GLOB_ONLYDIR添加到GLOB()中,这样就不需要过滤结果
通过is_dir()
- glob()已返回路径自由的basename,因此
不要认为你需要通过foreach并将结果分解
正在查找目录名
如果这一切听起来都可行,那么这似乎就是你想要的:
$listdirs = "";
$dirs = glob('*', GLOB_ONLYDIR );
$cb = basename(dirname(__FILE__));
if( $cb )
array_unshift( $dirs, $cb );
if( count( $dirs ) )
$listdirs = "'" . implode( $dirs, "','" ) . "'";
如果原始问题和后续“奖金”问题中的任务可以合并,我建议将glob()返回的数据保留为数组,而不是立即将其转换为字符串
还请注意:
- 您可以将GLOB_ONLYDIR添加到GLOB()中,这样就不需要过滤结果
通过is_dir()
- glob()已返回路径自由的basename,因此
不要认为你需要通过foreach并将结果分解
正在查找目录名
如果这一切听起来都可行,那么这似乎就是你想要的:
$listdirs = "";
$dirs = glob('*', GLOB_ONLYDIR );
$cb = basename(dirname(__FILE__));
if( $cb )
array_unshift( $dirs, $cb );
if( count( $dirs ) )
$listdirs = "'" . implode( $dirs, "','" ) . "'";
有趣的是,你做了困难的部分,但不知道简单的部分。有趣的是,你做了困难的部分,但不知道简单的部分。我可以问一个关于这个问题的额外问题吗please@Alex最好,你应该问一个单独的问题。但是,如果这只是一个关于这个问题的简单故障,你可以更新这个问题,我会更新这个答案。用法如下:这里是我当前的目录根,可能用户没有任何子文件或目录,它会显示sql错误,因为我做了这个$cb=basename(目录名(_u文件_u));“‘$cb’,”$listdirs
所以当只指向dir root时,它的末尾仍然有一个逗号,它会触发错误。只是一个小的附件问题。如果我问这个小问题,堆栈将不高兴,我应该把它全部附加together@Alex请你更新一下问题的细节好吗?从评论中我不明白你的问题是什么。$cb=basename(dirname(_文件__))
似乎是与“'$cb.”,“,”分开的语句$listdirs代码>我不明白。我能问一个关于这个的额外问题吗please@Alex最好,你应该问一个单独的问题。但是,如果这只是一个关于这个问题的简单故障,你可以更新这个问题,我会更新这个答案。用法如下:这里是我当前的目录根,可能用户没有任何子文件或目录,它会显示sql错误,因为我做了这个$cb=basename(目录名(_u文件_u));“‘$cb’,”$listdirs
所以当只指向dir root时,它的末尾仍然有一个逗号,它会触发错误。只是一个小的附件问题。如果我问这个小问题,堆栈将不高兴,我应该把它全部附加together@Alex请你更新一下问题的细节好吗?从评论中我不明白你的问题是什么。$cb=basename(dirname(_文件__))
似乎是与“'$cb.”,“,”分开的语句$listdirs
我不理解它。此方法修复了我在这里遇到的错误$result=end(explode(“/”,$fileinfo))//严格标准:只能通过引用/$result=explode(“/”,$fileinfo)传递变量//注意:数组到字符串的转换
感谢此方法修复了我在这里遇到的错误$result=end(explode(“/”,$fileinfo))//严格标准:只能通过引用/$result=explode(“/”,$fileinfo)传递变量//注意:数组到字符串的转换
谢谢