我有一个空数组和数据。使用函数我可以将数据放入我的数组中,这是函数:
foreach($values as $key => $value){
$name = $slugify->slugify($value->getColonne()->getName());
if(!isset($array[$value->getPosition()])){
$array[$value->getPosition()] = array();
}
array_push($array[$value->getPosition()], $name . ":" . $value->getValue());
}
有了这个,我最后:[["nom:andraud"], ["nom:andro", "prenom:clement"]]
但我希望有类似的内容:[{nom:"andraud"}, {nom:"andro", "prenom:clement"}]
我需要一个对象数组,而不是一个字符串数组。
答案 0 :(得分:3)
您可以使用stdClass
通过类型转换
$object = (object)$array;
或者您可以在foreach
foreach($values as $key => $value){
$name = $slugify->slugify($value->getColonne()->getName());
if(!isset($array[$value->getPosition()])){
$array[$value->getPosition()] = new stdClass();
}
$array[$value->getPosition()]->$name = $value->getValue();
}
答案 1 :(得分:0)
好的,所以不需要字符串数组,而是需要一个对象数组。
在这种情况下,您需要执行以下操作:
foreach ($values as $key => $value) {
$name = $slugify->slugify($value->getColonne()->getName());
if (!isset($array[$value->getPosition()])) {
$array[$value->getPosition()] = new stdClass();
}
$array[$value->getPosition()]->$name = $value->getValue();
}
注意强>
在PHP> = 5.3 严格模式中,如果您需要在对象内创建属性而不生成错误,而不是:
$foo = new StdClass();
$foo->bar = '1234';
您需要将属性创建为关联数组中的位置,然后将数组转换回对象。你可以这样做:
$foo = array('bar' => '1234');
$foo = (object)$foo;
因此,在这种情况下,您的代码需要像这样:
foreach ($values as $key => $value) {
$name = $slugify->slugify($value->getColonne()->getName());
// cast the object as an array to create the new property,
// or create a new array if empty
if (isset($array[$value->getPosition()])) {
$array[$value->getPosition()] = (array)$array[$value->getPosition()];
} else {
$array[$value->getPosition()] = array();
}
// create the new position
$array[$value->getPosition()][$name] = $value->getValue();
// now simply cast the array back into an object :)
$array[$value->getPosition()] = (object)$array[$value->getPosition()];
}