Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
构建碳对象数组-PHP_Php_Php Carbon - Fatal编程技术网

构建碳对象数组-PHP

构建碳对象数组-PHP,php,php-carbon,Php,Php Carbon,我在尝试添加一个包含碳元素的日期实例数组时感到困惑。我试图实现的是一个数组,在两个日期之间每天有一个碳物体 以下是我目前掌握的情况: // Get oldest and newest date by sorting the array by created_at usort($data, function($a, $b) { return $a->created_at <=> $b->created_at; }); $a = end($data); $to =

我在尝试添加一个包含碳元素的日期实例数组时感到困惑。我试图实现的是一个数组,在两个日期之间每天有一个碳物体

以下是我目前掌握的情况:

// Get oldest and newest date by sorting the array by created_at
usort($data, function($a, $b) {
    return $a->created_at <=> $b->created_at;
});

$a = end($data);
$to  = $a->created_at; //-> Newest date
$from = $data[0]->created_at; //-> Oldest date

// Work out the difference between to and from dates
$carbonTO = new Carbon($to);
$carbonFrom = new Carbon($from);
$diff = $carbonFrom->diffInDays($carbonTO);

// Write the dates to an array
$i = 0;
while ($diff >= 0) {
    $filters[$i] = $carbonFrom->addDays($i);
    $diff--;
    $i++;
    var_dump($filters);
}

die();
return $filters;
如您所见,我第二次输出数组时,0的键已被较新的日期2016-01-18覆盖。有人知道为什么吗

我正在使用Larvel 5.2在mamp上运行PHP7.0.0。

在php中,对象是通过引用而不是通过值分配的。这意味着每次将对象指定给变量时,只需存储对同一对象的引用。这显示在您的
var_dump()
code中,所有对象都是相同的#238:

一般的解决方案是使用不可变对象()或仅克隆现有对象:

while ($diff >= 0) {
    $filters[$i] = clone $carbonFrom->addDays($i);
    $diff--;
    $i++;
    var_dump($filters);
}
在PHP中,对象是按引用而不是按值分配的。这意味着每次将对象指定给变量时,只需存储对同一对象的引用。这显示在您的
var_dump()
code中,所有对象都是相同的#238:

一般的解决方案是使用不可变对象()或仅克隆现有对象:

while ($diff >= 0) {
    $filters[$i] = clone $carbonFrom->addDays($i);
    $diff--;
    $i++;
    var_dump($filters);
}

对的就像C或C++一样,因此,你使用“->”来访问函数和属性,而不是“.”,它是对对象的引用。就像C或C++一样,因此,你使用“->”来访问函数和属性,而不是“.”,它是对对象的引用。
while ($diff >= 0) {
    $filters[$i] = clone $carbonFrom->addDays($i);
    $diff--;
    $i++;
    var_dump($filters);
}