3

次のようなスクレイピングされた製品名と価格の 2 つの大きな配列があります。

$one=array('grape'=>'0.40','apple'=>'1.20','banana'=>'1.80','lemon'=>'10.43');
$two=array('grappe'=>'1.20','kiwi'=>'7.54','banaana'=>'3.20','aubergine'=>'2.32');

similar_text 関数を使用して配列を反復処理し、互いに密接に一致するキーを返そうとしています。たとえば、上記の例の値'grappe'=>'1.20'とから値を抽出したいと思います。'banaana'=>'3.20'

この関数は文字列データのみを受け入れるため、配列を参照して similar_text 関数に渡す方法がわかりません。foreachループを使用して配列を正しく参照し、 ifステートメントを関数と組み合わせて使用​​しsimilar_textて、2 つの一致間の類似度のパーセンテージを指定する必要があると思います。

例 (foreach ループ内):

if ($result[] = (similar_text( $one, $two)) > 80) {
    var_dump($result[]);
}
4

1 に答える 1

2

similar_text( $one, $two)similar_text($one, $two, $percent);両方の文字列で一致する文字の数を返すので、パーセンテージを取得するには、 instedを実行する必要があります

$one = array('grape' => '0.40','apple' => '1.20','banana' => '1.80','lemon' => '10.43');
$two = array('grappe' => '1.20','kiwi' => '7.54','banaana' => '3.20','aubergine' => '2.32');

$result = array();
foreach ( $one as $key => $value ) {
    foreach ( $two as $twoKey => $twoValue ) {
        similar_text($key, $twoKey, $percent);
        if ($percent > 80) {
            $result[$key] = array($value,$twoValue);
        }
    }
}

var_dump($result);

出力

array
  'grape' => 
    array
      0 => string '0.40' (length=4)
      1 => string '1.20' (length=4)
  'banana' => 
    array
      0 => string '1.80' (length=4)
      1 => string '3.20' (length=4)
于 2012-10-02T23:41:39.010 に答える