2

私はpreg_match_all($pattern, $string, $matches)データを定期的に使用していますが、基本的に、アレイが存在する場合は、アレイから£0.00、$ 0.00、または€0.00のいずれかを削除する必要があります。

アレイ内の位置は、仮にあったとしてもわかりません。

試しましたが、うまくいきませんでしunset($matches['£0.00'])unset($matches[0]['£0.00'])

また、実際の通貨記号や正規表現を使用せずに実行できますか?\p{Sc}

要約すると、通貨記号が付いた数値の配列があり、ゼロのエントリを削除する必要があります。

サンプル配列:

Array ( [0] => Array ( [0] => £18.99 [1] => £0.00 [2] => £0.00 [3] => £0.00 ) ) 

これは可能ですか?

4

2 に答える 2

6

の使用法preg_match()preg_match_all()時々奇妙なことがあります

$matchesパターンへの一致の配列になります-この場合、

preg_match("/\p{Sc}0\.00/","£0.00",$matches);
//$matches[0] => £0.00

()または、パターンに括弧を追加すると、パーツを抽出できます

preg_match("/\p{Sc}(0\.00)/","£0.00",$matches);
//$matches[0] => £0.00
//$matches[1] => 0.00

したがって、この問題を解決するには、これを試してください

foreach($sample_array as $key => $value)
{
     if(preg_match("/(\$|\p{Sc})0\.00/",$value))
     {
          unset($sample_array[$key]);
     }
}

|を示すパイプに注意してください。$または£、ユーロ記号に別のパイプを追加すると、それもキャプチャされます。また、配列を-ingする代わりに、元の配列のキーを-ingしていることに注意してくださいunset()unset()$matches

于 2012-11-19T06:31:21.857 に答える
0
function remove_element($arr, $val)

        {

            foreach ($arr as $key => $value)

            {

                if ($arr[$key] == $val)

                {

                unset($arr[$key]);

                }

            }

            return $arr = array_values($arr);

        }

この関数を使用すると、これらの関数は、指定された値を削除した後に配列要素を返します。

于 2012-11-19T07:05:47.277 に答える