2

MySQLから取得したPHPオブジェクトがあります。

foreachループを通過し、=>演算子を使用することで、各オブジェクトの値を取得できます。私がやりたいのは、foreachループの前にいくつかのロジックを適用し、潜在的にいくつかの行を編集/削除することです。

オブジェクト1のquestion_idなど、アイテムの1つの値を変更するにはどうすればよいですか?また、特定の条件が満たされた場合、各オブジェクトをループして削除するにはどうすればよいですか?次に、新しいオブジェクトを挿入するにはどうすればよいですか?

私が読むことができるチュートリアルはどこかにありますか、私は配列でほとんどのことを行うことができますが、オブジェクトは私にとって新しいものです。

前もって感謝します。

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 に答える