首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作PHP对象(删除/编辑)

操作PHP对象(删除/编辑)
EN

Stack Overflow用户
提问于 2012-06-05 16:59:22
回答 1查看 1.2K关注 0票数 2

我有一个从MySQL检索到的PHP对象。

我可以通过遍历foreach循环并使用=>操作符来检索每个对象的值。我想要做的是在foreach循环之前应用一些逻辑,并可能编辑/删除一些行。

如何更改其中一项的值,例如object 1的question_id?另外,如果满足某个条件,我如何遍历每个对象并将其删除?那么如何插入一个新对象呢?

有没有我可以阅读的教程,我可以用数组做大多数事情,但对象对我来说是新的。

提前谢谢。

代码语言:javascript
复制
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 
    ) 
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-05 17:03:34

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

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

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

代码语言:javascript
复制
unset($array[1]->question_type);

如果您希望遍历对象并对其进行操作,则可以通过&使用foreach()pass the $obj by reference

例如,如果您希望在等于3时删除所有question_id密钥,请使用以下命令:

代码语言:javascript
复制
foreach ($array as &$obj) {
    if ($obj->question_id == 3) unset($obj->question_id);
}

或者,如果您想要删除整个对象,您可以这样做:

代码语言:javascript
复制
foreach ($array as &$obj) {
    if ($obj->question_id == 3) unset($obj);
}

更新

通过引用传递似乎不起作用(至少在你的例子中不起作用),所以你可以尝试这样做:

代码语言:javascript
复制
$c = count($questions);
for ($i=0; $i<$c; $i++) {
    if ($questions[$i]->question_id == 3) unset($questions[$i]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10894369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档