如何使用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