0

私の配列は次のようになります。

array( '0|500|0.50', '501|1000|0.75' );

検索した値を持つ KEY を取得するために検索を実行しようとしています。

検索するためにこの関数を作成しました:

function cu_array_search($str,$array){
    foreach($array as $key => $value) {
        if(strstr($str,$value)) {
            return true;
        } else {
            return false;
        }
    }
}

チェック時に次のように使用します。

if (cu_array_search(500,$array) {

しかし、配列の最初のキーに 500 が存在するにもかかわらず、true を返すことはありません。

これを解決するには?

ありがとう

4

4 に答える 4

2

strpos0.5001それがそうでなくても、関数がtrueを返すようにします500

で値を分解|し、配列内の数値かどうかを確認する必要があります。

function cu_array_search($num, $array){
  return count(array_filter($array, function ($var) use ($num) {
    return in_array($num, explode('|', $var));
  })) > 0;
}
于 2012-12-01T11:54:00.123 に答える
1

干し草の山は最初の引数であり、2番目の引数ではありません。

if(strstr($value,$str)) {

さらに、strposこれでより高速になるため、次を使用する必要があります。

function cu_array_search($str,$array){
    foreach($array as $key => $value) {
        if(strpos($value,$str) !== false) {
            return $key;
        } else {
            return false;
        }
    }
}
于 2012-12-01T11:50:39.703 に答える
0

これは正常に機能します

<?php

function cu_array_search($str, $array) {
    foreach($array as $key => $value) {
        $temp_array=explode('|', $value);
        if (in_array($str, $temp_array))
            return true;
    }
    return false;
}

$array = array( '0|500|0.50', '501|1000|0.75' );


if (cu_array_search(500, $array))
    echo "success";
else
    echo "failed" ;

?>
于 2012-12-01T12:05:23.363 に答える
0

まず、strstrパラメータが間違っています

次に、return falseループの最後にある必要があります。

第三に、キーが必要な場合は、return $key代わりに使用する必要がありますreturn true

function cu_array_search($str,$array){
    foreach($array as $key => $value) {
        if(strstr($value, $str)) {
            return $key;
        }
    }
    return false;
}
于 2012-12-01T11:48:09.510 に答える