如何用PHP在mongodb中重复相同的值

sdnqo3pr  于 2023-02-28  发布在  PHP
关注(0)|答案(2)|浏览(109)

我尝试用FOR循环重复N次数组,但是我被卡在了最后一个包含更多元素的数组中,这是我目前为止的代码:

function data() {
    for ($i = 1 ; $i <= 50 ; $i++) {
        $magnitud = array('nombre' => 'medidor');
        for ($j = 1 ; $j <= 5 ; $j++) {
            $magnitude['magnitude'.$i] = array('date' => $date, 'value' => mt_rand(1,200));;  
        }
    }
    return $magnitude;
}

for ($i = 1 ; $i <= 50 ; $i++) { 
    $center->insertOne(['meter' => 'meter'.$i, 'data' => data()]);
}

我需要将包含日期和值的数组的值重复5次。

array('date' => $date, 'value' => mt_rand(1,200));

大概是这样的

Date: 05/03/2015
Value: 25
Date: 10/12/2012
Value: 45
Date: 15/06/2005
Value: 67
Date: 26/05/2009
Value: 78
.
.
.

我尝试了很多方法,但是都没有成功。有人能帮我把这个数组重复N次吗?
以防万一你还没有得到任何关于我的问题的想法,我附上这张图片,这是我在Robo3T(可视化管理器)

编辑:为了更好地解释我自己,这是我试图获得的JSON。

"_id" : ObjectId("5ab0c29db57dce17e0002bc0"),
"meter" : "meter1",
"data" : {
    "magnitude1" : {
        "date" : "20/10/2015 21:57:05",
        "value" : 192,
        "date" : "13/12/2015 22:51:15",
        "value" : 85,
        "date" : "15/05/2016 05:21:06",
        "value" : 65,
        "date" : "28/06/2017 15:32:26",
        "value" : 72,
        "date" : "02/11/2017 18:15:34",
        "value" : 12,
    },
    "magnitude2" : {
        "date" : "15/12/2009 15:21:32",
        "value" : 45,
        "date" : "12/05/2013 16:45:07",
        "value" : 96,
        "date" : "21/02/2015 03:06:12",
        "value" : 85,
        "date" : "15/08/2015 14:05:22",
        "value" : 78,
        "date" : "05/01/2017 21:12:32",
        "value" : 198,
    },
    .
    .
    .
}
cuxqih21

cuxqih211#

我想你的意思是你想拥有magnitude数组的5个子数组,那么就这样做吧

function data() {
    for ($i = 1 ; $i <= 50 ; $i++) {
        for ($j = 1 ; $j <= 5 ; $j++) {
            $magnitude['magnitude'.$i][] = array('date' => $date, 'value' => mt_rand(1,200));;  
        }
    }
    return $magnitude;
}

在该行$magnitude['magnitude'.$i][]中不使用[],这将在每次循环内部循环时在$magnitude['magnitude'.$i]中创建一个新的子事件

aurhwmvo

aurhwmvo2#

发生这种情况是因为在第二个循环中,值总是被重写,因为键从未改变。

function data()
{
    $value = 0;

    for ($i = 0; $i < 250 ; $i++) {
        $value = $i % 5 === 0 ? mt_rand(1, 200) : $value;
        $magnitude['magnitude' . ($i + 1)] = array('date' => $date, 'value' => $value);
    }

    return $magnitude;
}

相关问题