2011-12-31 16 views
0

私はこのオブジェクトの配列を持っています。しかし、私は特定の基準を満たすオブジェクトを引き出すだけです。 "post_title"キーを見ると、コンマが含まれていないオブジェクトだけを取り出したいと思う。これは可能ですか?PHP:オブジェクト要素の条件に基づいて配列オブジェクト要素をプルしますか?

私の例では、 "post_title"キーにカンマがない唯一のものであるため、インデックス2の配列を取り出したいと思います。

Array 
(
    [0] => stdClass Object 
     (
      [ID] => 504 
      [post_title] => Playroom (Black, Custom 2) 
     ) 

    [1] => stdClass Object 
     (
      [ID] => 503 
      [post_title] => Playroom (Black, Custom 1) 

     ) 

    [2] => stdClass Object 
     (
      [ID] => 252 
      [post_title] => Play (Black) 

     ) 

) 
1 

ありがとうございました。

+0

http://stackoverflow.com/questions/2840127/filter-by-value-in-object-of-array – pritaeas

答えて

0

はいすることができますが、あなたはこのように、それを自分でコーディングする必要があります。

$results = array(); 
foreach ($source as $obj) { 
    if (strpos($obj->post_title, ',') === false) { 
    $results[] = $obj; 
    } 
} 
// $results will now have the elements filtered 
+0

ありがとう...私はforeachのを試してみました:別の方法としては、このような何か、array_filter使用することができますループを再構築するとは思わなかった...もう一度感謝します。 –

+0

'array_filter()'を提唱している回答は、これを行うための "良い"方法として一般に認められています。 – rdlowrey

+0

PHP <5.3の場合は、私は同意しなければならない:他の場所では使用しないことのために完全な関数を書くことは決してなかったし、メソッド/関数の内部にある場合は読みにくくなるあなたのコールバックをどこか別の場所に宣言してください。 – rabusmar

0

チェックarray_filter機能 - あなたは何をhttp://php.net/manual/en/function.array-filter.php

$myArray = /*snip*/; 

function titleDoesNotContainComma($object) { 
    return strpos($object->post_title, ',') === false; 
} 

$filteredArray = array_filter($myArray, 'titleDoesNotContainComma'); 
0

を試してみましたか?あなたは単に配列をforeachすることができ、関連する結果を持つ新しい配列を構築することができます。

function hasComma($object) { 
    if(strpos($object->post_title, ',')) { 
    return false; 
    } else { 
    return true; 
    } 
} 

var_dump(array_filter($array, 'hasComma')); 
関連する問題