4

私の最初の質問は、オブジェクト配列 [words] 内で配列の値を検索し、一致が見つかった場合にオブジェクトを返すにはどうすればよいですか?

より良い一致を検索するにはどうすればよいですか? 以下の例では、最初のオブジェクトが 1 つしか一致しないよりも、2 番目のオブジェクトの方が 2 つの単語が共通する一致の方が適しています。

Array
(
    [0] => blue
    [1] => green
    [2] => love
    [3] => sandro
)


stdClass Object
(
    [1] => stdClass Object
        (
            [words] => Array
                (
                    [0] => green
                    [1] => blue
                )

            [html] => html+img+link+code
        )

    [2] => stdClass Object
        (
            [words] => Array
                (
                    [0] => love
                    [1] => sex
                    [2] => blue
                )

            [html] => html+img+link+code
        )

)

私が試したコード:

foreach ($ads_arr as $ad) {
  print_r(array_intersect($ad->words,$words_arr));
}
4

2 に答える 2

1

ケースにループを使用できますが、for実際の php クラス ( ではないstdClass) を定義し、いくつかのメソッドを実装することを検討する必要があります。

foreach($main_std as $id => $sub_std){
 $count_match[$id] = 0;
 // now, check for each objects 
 // you can use an other loop with in_array, array_intersect 
 // or any other way
 foreach($the_array as $word_search)
 {
   // for each word you're looking for, add +1
   if (in_array($word_search, $sub_std->words))
     $count_match[$id] ++;
 }
}
// here, $count_match is an array you can sort by best match or whatever you want
于 2013-11-02T09:10:46.323 に答える
0

試してみてくださいarray_intersect()

$output = array_intersect($array1, $array2);
print_r($output);
于 2013-11-02T08:51:30.490 に答える