0

いくつかの検索条件に基づいて php 配列を除外したいのですが、うまくいきません。

Googleで見つけたこのコードを試してみましたが、エラーが発生しましたか?

$shortWords = '/'.$_GET['sSearch'].'/i';
$rResult = array_filter($rResult, 
     function($x) use ($shortWords) {
       return preg_match($shortWords,$x);
      });

エラーは次のとおりです。

 preg_match() expects parameter 2 to be string, array given

「function($x) use....」が何をしているのかよくわかりません...phpに対する私の制限。

「array_filter()」の前の配列は次のようになります。

 array(
    [0] =>
        array(
            ['unit_nbr'] =>'BBC 2'
            ['p_unit_group_id'] =>NULL
            ['name'] =>1
            ['unit_id'] =>22640
            ['properties_id'] =>1450
            )

    [1] =>
        array(

            ['unit_nbr'] =>'BBC 3'
            ['p_unit_group_id'] =>NULL
            ['name'] =>1
            ['unit_id'] =>22641
            ['properties_id'] =>1450
) 

その検索文字列を関数に渡すときに、unit_nbr "BBC 2" を配列に残しておきたいと思います。何が間違っているのかわかりません。

どんな助けでも大歓迎です。

前もって感謝します。

4

2 に答える 2

0

問題は多次元配列です。コールバックに渡す$xと、配列は次のとおりです。

    array(
        ['unit_nbr'] =>'BBC 2'
        ['p_unit_group_id'] =>NULL
        ['name'] =>1
        ['unit_id'] =>22640
        ['properties_id'] =>1450
        )

ただし、その配列内の項目も確認する必要があります。

$shortWords = '/'.$_GET['sSearch'].'/i';
$rResult = array_filter($rResult, 
    function($x) use ($shortWords) {
        foreach ($x as $_x) {
            if (preg_match($shortWords,$_x)) {
                return true;
            }
            return false;
        }
    }
);
于 2013-09-20T05:18:13.893 に答える
0

次のようなことを試してください:

foreach ($rResult as $okey => $oval) {
    foreach ($oval as $ikey => $ival) {
        if ($ival != $_GET['sSearch']) {
             unset($rResult[$okey]);
        }
    }
}

それがあなたの探しているものではない場合は、あなたが達成しようとしていることについてさらに情報が必要です.

于 2013-09-19T23:23:05.577 に答える