2

我有一个从 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 
    ) 
)
4

1 回答 1

0

您可以使用unset()删除对象属性:

甚至可以取消设置在当前上下文中可见的对象属性。

http://php.net/manual/en/function.unset.php

unset($array[1]->question_type);

如果要遍历对象并对其进行操作,可以使用foreach ( )使用$obj&.

例如,如果要删除所有等于 的键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]);
}
于 2012-06-05T09:03:33.957 回答