php中使用单引号和逗号分隔名称

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 = '';

我有一个目录,它的内容保存在我的数据库中,包括文件和子目录名,现在我尝试选择所有子目录名,以便在sql select查询中使用它,但我的问题是所选目录显示如下
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)传递变量//注意:数组到字符串的转换
谢谢