我从MySQL检索了一个PHP对象。
我可以通过foreach循环并使用=>来检索每个对象的值。运营商。我想要做的是在foreach循环之前应用一些逻辑,并可能编辑/删除一些行。
我如何更改其中一个项目的值,例如对象1的question_id?如果满足某个条件,我将如何遍历每个对象并删除它?如何插入新对象?
是否有我可以阅读的教程,我可以用数组做大部分工作,但对象对我来说是新的。
提前致谢。
Array (
[0] => stdClass Object (
[question_id] => 1
[question_type] => multiple_choice
[question_unit] => 7
[question_difficulty] => 56.5956047853
)
[1] => stdClass Object (
[question_id] => 2
[question_type] => multiple_choice
[question_unit] => 7
[question_difficulty] => 54.665002232
)
[2] => stdClass Object (
[question_id] => 3
[question_type] => multiple_choice
[question_unit] => 7
[question_difficulty] => 55.2923002984
)
)
答案 0 :(得分:0)
您可以使用unset()删除对象属性:
可以取消设置当前上下文中可见的对象属性。
http://php.net/manual/en/function.unset.php
unset($array[1]->question_type);
如果您想循环浏览对象并对其进行操作,可以使用&
使用foreach()和pass the $obj
by reference。
例如,如果您要删除所有question_id
个键,如果等于3
,请使用此项:
foreach ($array as &$obj) {
if ($obj->question_id == 3) unset($obj->question_id);
}
或者,如果要删除整个对象,可以这样做:
foreach ($array as &$obj) {
if ($obj->question_id == 3) unset($obj);
}
似乎通过引用传递不起作用(至少在你的情况下不行),所以你可以试试这个:
$c = count($questions);
for ($i=0; $i<$c; $i++) {
if ($questions[$i]->question_id == 3) unset($questions[$i]);
}