Php 如何基于表单复选框创建.gif文件数组

Php 如何基于表单复选框创建.gif文件数组,php,Php,目标:要有一种复选框类别,用户可以从中选择,该类别从所选目录生成一个包含所有.gif文件的数组 我想解决这个问题的方法是创建一个目录数组,将其传递到glob()函数中。但我的问题是正确格式化目录参数。或者也许有一种更有效的方法来实现这一点 示例代码: <form method="get"> <input type="checkbox" name="category_1" value="true"> <input type="checkbox" name="c

目标:要有一种复选框类别,用户可以从中选择,该类别从所选目录生成一个包含所有.gif文件的数组

我想解决这个问题的方法是创建一个目录数组,将其传递到glob()函数中。但我的问题是正确格式化目录参数。或者也许有一种更有效的方法来实现这一点

示例代码:

<form method="get">
  <input type="checkbox" name="category_1" value="true">
  <input type="checkbox" name="category_2" value="true">
  <input type="checkbox" name="category_3" value="true">
  <input type="checkbox" name="category_4" value="true">
  <input type="checkbox" name="category_5" value="true">
<input type="submit" value="submit">
</form>

<?php
$dir = [];  //INITIALIZE DIR - ONLY REFERENCED IN IF STATEMENTS
if(isset($_GET['category_1'])){
  $dir[] = "gif/category_1/*.gif"
}
if(isset($_GET['category_2'])){
  $dir[] = "gif/category_2/*.gif"
}
if(isset($_GET['category_3'])){
  $dir[] = "gif/category_3/*.gif"
}
if(isset($_GET['category_4'])){
  $dir[] = "gif/category_4/*.gif"
}
if(isset($_GET['category_5'])){
  $dir[] = "gif/category_5/*.gif"
}

$images = glob(foreach($dir as $path){echo $path}, GLOB_BRACE)
?>
<?php echo $path.','; // this would leave comma at end. ?>

这里的问题是,多个glob参数必须用逗号分隔,这样我就可以在echo$dir[]循环中附加一个逗号,但它仍然会在末尾留下一个无效的逗号

示例:

<form method="get">
  <input type="checkbox" name="category_1" value="true">
  <input type="checkbox" name="category_2" value="true">
  <input type="checkbox" name="category_3" value="true">
  <input type="checkbox" name="category_4" value="true">
  <input type="checkbox" name="category_5" value="true">
<input type="submit" value="submit">
</form>

<?php
$dir = [];  //INITIALIZE DIR - ONLY REFERENCED IN IF STATEMENTS
if(isset($_GET['category_1'])){
  $dir[] = "gif/category_1/*.gif"
}
if(isset($_GET['category_2'])){
  $dir[] = "gif/category_2/*.gif"
}
if(isset($_GET['category_3'])){
  $dir[] = "gif/category_3/*.gif"
}
if(isset($_GET['category_4'])){
  $dir[] = "gif/category_4/*.gif"
}
if(isset($_GET['category_5'])){
  $dir[] = "gif/category_5/*.gif"
}

$images = glob(foreach($dir as $path){echo $path}, GLOB_BRACE)
?>
<?php echo $path.','; // this would leave comma at end. ?>

我走对了吗?还是有更好的方法来做到这一点。
提前感谢大家的帮助

如果我理解你的问题,你可以使用内爆

$images = glob(implode(",", $dir), GLOB_BRACE)
“内爆”将输出逗号分隔的数组项。

将返回带“,”的串联字符串,而不留下尾随逗号,并避免
foreach
循环

$images = glob(implode(',', $dir), GLOB_BRACE)
您可以为此使用函数。 如下图所示

$images = glob(implode(",", $dir), GLOB_BRACE);

关于:
内爆(',',$dir)是的,谢谢!我不知道内爆(),当我取代大家提出的解决方案时,我得到一个错误,说明变量dir未定义..当我提交表单时,错误消息消失了,但我将get变量包装在isset()中以防止它。也许我需要$images=glob(内爆(',',$dir),glob_BRACE)的某种条件?我不明白你需要什么。您能详细说明一下吗?错误是$dir从未初始化,因为对它的所有引用都位于if语句中。因此,将$dir=[]添加到代码中修复了问题。谢谢你的帮助!只是我的一点疏忽。