1

2層配列の最下層の一部で部分文字列を検索し、最上層からキーを返そうとしています。たとえば、以下の配列で「A」内で「ca」を検索すると、「0」と「2」が返されます(ただし、「牛」は見逃されます)。

Array (
    [0] => Array (
        [A] => cat
        [B] => horses
        )
    [1] => Array (
        [A] => dog
        [B] => cattle
    )
    [2] => Array (
        [A] => cat
        [B] => sheep
    )
) 
4

1 に答える 1

1

次のように試すことができます:

$array = array(
    array(
        "A" => "cat",
        "B" => "horse"
    ),
    array(
        "A" => "dog",
        "B" => "cattle"
    ),
    array(
        "A" => "cat",
        "B" => "sheep"
    ),
);

$result = mySearch($array, "A", "ca");

function mySearch($array, $key, $search)
{
    $results = array();
    foreach ($array as $rootKey => $data) {
        if (array_key_exists($key, $data)) {
            if (strncmp($search, substr($data[$key], 0, 2), strlen($search)) == 0) {
                $results[] = $rootKey;
            }
        }
    }
    return $results;
}

var_dump($result);

出力します:

array(2) {
  [0]=>
  int(0)
  [1]=>
  int(2)
}

このメソッドは安全なエンコードではないことに注意してください (str* 関数ファミリーの代わりに mb_str* を使用できます。詳細はこちらを参照してください)。

于 2012-09-19T20:04:29.987 に答える