php数组:返回匹配元素

php数组:返回匹配元素,php,arrays,Php,Arrays,我想在我的类中使用另一个函数,它返回一些带有特定日期的数组。使用exif_read_数据功能从照片中提取日期。他们看起来像这样:2011:04:01 16:12:23。我要找的函数应该返回某个日期的所有照片。因此,我想知道如何使函数返回,例如,所有带有日期戳的照片看起来像2011:04:01 xx:xx:xx。希望你明白我的意思。提前谢谢 这应该可以做到: class Photos { private $photos = array(); function add_photo($filen

我想在我的类中使用另一个函数,它返回一些带有特定日期的数组。使用exif_read_数据功能从照片中提取日期。他们看起来像这样:
2011:04:01 16:12:23
。我要找的函数应该返回某个日期的所有照片。因此,我想知道如何使函数返回,例如,所有带有日期戳的照片看起来像
2011:04:01 xx:xx:xx
。希望你明白我的意思。提前谢谢

这应该可以做到:

 class Photos 
{
private $photos = array();

function add_photo($filename, $date, $lat, $long) 
{
  $this->photos[] = array('filename' => $filename, 'date' => $date, 'lat' => $lat,  'long' => $long);
    return $this;
}

function get_all() 
{
   return json_encode($this->photos);
}

function get_N($n) 
{
    return json_encode(array_slice($this->photos, 0, $n));
}

}
您可能还需要查看函数



这应该做到:

 class Photos 
{
private $photos = array();

function add_photo($filename, $date, $lat, $long) 
{
  $this->photos[] = array('filename' => $filename, 'date' => $date, 'lat' => $lat,  'long' => $long);
    return $this;
}

function get_all() 
{
   return json_encode($this->photos);
}

function get_N($n) 
{
    return json_encode(array_slice($this->photos, 0, $n));
}

}
您可能还需要查看函数




我只需检查前10个字符是否相同:

function get_by_date($date) {
    $date = strftime('%D', strtotime($date));
    $photos = array();
    foreach($this->photos as $photo) {
        if(strftime('%D', strtotime($photo['date'])) == $date) {
            $photos[] = $photo;
        }
    }
    return $photos;
}
如果您使用的是PHP 5.3,则可以使用以下命令和闭包:

public function getByDate($date) {
    $return = array();
    foreach ($this->photos as $photo) {
        if ($date == substr($photo['date'], 0, 10)) {
            $return[] = $photo;
        }
    }

    return $return;
}

我只需检查前10个字符是否相同:

function get_by_date($date) {
    $date = strftime('%D', strtotime($date));
    $photos = array();
    foreach($this->photos as $photo) {
        if(strftime('%D', strtotime($photo['date'])) == $date) {
            $photos[] = $photo;
        }
    }
    return $photos;
}
如果您使用的是PHP 5.3,则可以使用以下命令和闭包:

public function getByDate($date) {
    $return = array();
    foreach ($this->photos as $photo) {
        if ($date == substr($photo['date'], 0, 10)) {
            $return[] = $photo;
        }
    }

    return $return;
}

关于array_filter()函数值得注意,但这实际上与您在这里所做的相同。无论如何,您都会编写一个比较日期的函数。@Compeek:在PHP5.3中,您可以定义lambda函数,但是是的。我刚才提到的原因是OP可能希望对他的数据执行类似的筛选:用奖金信息回答问题永远不会有坏处。:)嗯,接下来的问题是:有没有办法生成一个函数来返回包含任何照片的所有日期?顺便问一下,我如何计算每个日期的照片数?我想返回每个日期的计数。请注意array_filter()函数,但这实际上与您在这里所做的相同。无论如何,您都会编写一个比较日期的函数。@Compeek:在PHP5.3中,您可以定义lambda函数,但是是的。我刚才提到的原因是OP可能希望对他的数据执行类似的筛选:用奖金信息回答问题永远不会有坏处。:)嗯,接下来的问题是:有没有办法生成一个函数来返回包含任何照片的所有日期?顺便问一下,我如何计算每个日期的照片数?我想返回每个日期的计数。
public function getByDate($date) {
    return array_filter($this->photos, function($photo) use($date) {
        return $date == substr($photo['date'], 0, 10);
    });
}