如何使用foreach php创建具有相同属性的多个对象

如何使用foreach php创建具有相同属性的多个对象,php,foreach,Php,Foreach,我已搜索创建具有相同属性的多个对象,但未找到解决方案。所以我正在创建这个对象 $monthData = new \stdClass(); foreach($quotesData as $datas){ $monthData->name = $datas[0] ["monthname"]; $monthData->data = $datas[0] ["price"]; } 但它只创建了一个对象 当我执行$monthData[$i]->name时,php抛出一个异常,无

我已搜索创建具有相同属性的多个对象,但未找到解决方案。所以我正在创建这个对象

$monthData = new \stdClass();
foreach($quotesData as $datas){

   $monthData->name =  $datas[0] ["monthname"];
   $monthData->data = $datas[0] ["price"];
}
但它只创建了一个对象

当我执行$monthData[$i]->name时,php抛出一个异常,无法将stdClass类型的对象用作文件中的数组

所以我想要这样的结果对象

{
        name: 'Jane',
        data: [1, 0, 4]
    }, {
        name: 'John',
        data: [5, 7, 3]
    }
但此时它只给了我一个对象作为回报

   {
        name: 'Jane',
        data: [1, 0, 4]
    }
我已搜索创建具有相同属性的多个对象,但未找到解决方案

不。它在你写的时候就工作了——再读一遍你的代码。您要做的是:创建新对象,然后循环并更改该对象的属性。如果需要多个对象,则需要在循环中创建:

foreach(...) {
   $obj = new ...
   $obj-> ...
}

这是因为您将$monthData声明为单个对象,这意味着当您循环遍历数据时,数组中的最后一项实际上设置了对象数据。要创建阵列,然后将对象添加到阵列:

$monthData = array();

foreach ($data as $key => $value)
{
    # define obj per loop
    $myObj = new \stdClass();

    # set obj data with loop data
    $myObj->data = $value['some_key'];
    # etc. etc.

    $monthData[] = $myObj;    
}

var_dump($monthData); # will display array of objects to use