【问题标题】:PHP search array and return only first value that meets criteriaPHP搜索数组并仅返回满足条件的第一个值
【发布时间】:2015-04-14 22:53:47
【问题描述】:

我有一个标有YYYY-MM-DD.jpg 的文件目录。

使用 PHP,我正在尝试搜索这些文件的数组并打印今天之前的最新日期的文件名(不包括 jpg)。

例如:今天是 2015-04-14

文件:

  • 2015-04-20.jpg
  • 2015-04-11.jpg
  • 2015-04-02.jpg
  • 2015-04-01.jpg

我想返回“2015-04-11”。

我已经为此工作了几天,试图将多个帖子中的内容拼凑起来。所以,我经历了很多迭代。但这里有一个:

$scan = scandir($comic_path,1); //go through directory DESC
$last_comic = substr($scan[0],0,10); //substr scan to get just the date

function LastComic(){
    foreach ($scan as $acomic) {
  if ($acomic < $last_comic) {
    echo $acomic . "\n";
  }
  $last_comic = $acomic;
}}
LastComic($last_comic);

提前感谢您的帮助。

【问题讨论】:

  • 非常适合您。怎么了?
  • 函数范围。在 PHP 中,在函数外部定义的变量在函数内部不可用。您需要在函数内部定义变量或将其作为参数传递。我还看到您正在将 $last_comic 传递给函数,但函数中没有定义任何参数。

标签: php arrays date scandir


【解决方案1】:

嗯,你的代码很好:

$today = date("Y-m-d");
$last_comic = substr($scan[0],0,10);
foreach ($scan as $acomic) {
    $only_date = substr($acomic,0,10);
    if ($only_date < $today) {
        $last_comic = $acomic;
        break;
    }
}

这就是你想要完成的事情吗?

【讨论】:

  • 干得好,我自己做得再好不过了。直到我发布我的之后我才看到你的。
  • 这行得通。伟大的!!谢谢!我觉得我很近,但在转圈。
【解决方案2】:

这很干净:

$scan = scandir($comic_path,1); //go through directory DESC
$last_comic = date('Y-m-d');  // today's date
foreach ($scan as $acomic) {
  if (substr($acomic,0,10) < $last_comic) {
    $last_comic = substr($acomic,0,-4);
    echo "$last_comic\n";
    break;
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多