1

こんにちは!!

PHP の std オブジェクトと配列に慣れている人にとっては、非常に単純な質問だと思います。

これが私のSTDオブジェクト配列です:

Array ( [0] => stdClass Object ( [name] => name1 [description] => [category_id] => 17 [category_publish] => 1 [ordering] => 1 [category_parent_id] => 10 ) [1] => stdClass Object ( [name] => name2 [description] => [category_id] => 8 [category_publish] => 1 [ordering] => 1 [category_parent_id] => 0 ) [2] => stdClass Object ( [name] => name3 [description] =>desc [category_id] => 10 [category_publish] => 1 [ordering] => 2 [category_parent_id] => 0 ) [3] => stdClass Object ( [name] => name3 [description] => [category_id] => 16 [category_publish] => 1 [ordering] => 2 [category_parent_id] => 10 ) )

今、私は例えば数字を持つ別の配列を持っています:

$arr=array(17,10);

そして、この数値の 1 つが [category_id] 値 (std オブジェクト内) と等しいかどうかを確認する必要があります。等しい場合は、次の [category_id] を確認し、そうでない場合は、このオブジェクトのすべての値を削除します。(もちろん、他の方法は、配列内の数値のみを使用して新しい STD オブジェクトを構築することです)

したがって、結果は次のようになります。

Array ( [0] => stdClass Object ( [name] => name1 [description] => [category_id] => 17 [category_publish] => 1 [ordering] => 1 [category_parent_id] => 10 ) [2] => stdClass Object ( [name] => name3 [description] =>desc [category_id] => 10 [category_publish] => 1 [ordering] => 2 [category_parent_id] => 0 ) )

categiry_id =17 および 10 の配列のみがこの stdObject 内にあります。

ご助力ありがとうございます!!

エラン。

4

2 に答える 2

3

これを試して

$arr=array(17,10);
foreach ($array as $key => $obj) {
  if (!in_array($obj->category_id, $arr)) {
    unset($array[$key]);
  }
} 
// edited, missing closing bracket
于 2012-10-13T10:29:29.407 に答える
1

array_filter必要なものまたは不要なものをフィルタリングするために使用できます

$filterCategory = array(17,10);
$array = array_filter($yourArray,function($var) use($filterCategory) { return in_array($var->category_id, $filterCategory); } );
于 2012-10-13T10:29:02.257 に答える