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


Separate names with single quote and commas in php

我有一个目录,它的内容保存在我的数据库中,包括文件和子目录名,现在我已经尝试选择所有的子目录名称,这样我就可以在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;     
  }
}
?>

奖金问题在我得到像这样的子文件和目录'css','js','page','images'之后,我还将添加主根目录示例'root','css','js','page','images'

这是我的代码

<?php
$cb = basename(dirname(__FILE__)); //the current base name
$root = "'".$cb."',"
echo $root . $listdirs;
?>

现在,如果根目录为空怎么办?它仍然会在根的末尾添加逗号,我会在sqlselect中得到错误。我该如何修复

也许这个:

<?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;

如果原始问题和后续"奖金"问题中的任务可以合并,我建议将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, "','" ) . "'";

正如John Conde所说,你真的很接近:)

$listdirs .= "'". $result ."',"; 

不要忘记删除这个字符串的最后一个字符(最后一个逗号),在循环之后,:

$listdirs = substr($listdirs,0,-1);

我认为您的"echo$listdirs;"也应该在循环之外。