0

次のような配列があります

array (size=7)
  'car_make' => string 'BMW' (length=3)
  'car_model' => string 'M3' (length=2)
  'car_year' => string '2001' (length=4)
  'car_price' => string '10000' (length=5)
  'car_kilometers' => string '100000' (length=6)
  'paint' => string 'black' (length=5)
  'tires' => string 'pirelli' (length=7)

したがって、基本的に car_ で始まるいくつかの基本アイテムと、いくつかの追加アイテムがあります。

car_* ではない各キーを検索しようとしているので、この場合はペイントとタイヤです。だから私は次のようなことをしています

foreach($_SESSION['car'][0] as $key=>$value)
{
    if($key != preg_match('/car_.*/', $key))
    {
        echo 'Match';
    }
}

2 つの非 car_ キーのために、2 つの一致をエコーアウトすると予想していました。代わりに、これは car_ キーの 5 をエコーし​​ます。

しかし、私がするとき

if($key == preg_match('/car_.*/', $key))

2 つの非 car_ キーの 2 つの一致をエコーし​​ます。

私はどこを台無しにしたり誤解したりしていますか?

4

3 に答える 3

0

http://php.net/manual/en/function.preg-match.phpから

戻り値

preg_match() は、パターンが指定されたサブジェクトに一致する場合は 1 を返し、そうでない場合は 0 を返し、エラーが発生した場合は FALSE を返します。

したがって、文字列ではなく、1 または 0 と比較する必要があります。

コードが逆方向に機能していた理由は、数値を文字列と比較すると興味深い結果が得られるためです。

http://php.net/manual/en/types.comparisons.phpから

1 == "" は FALSE です

0 == "" は真です

于 2013-05-09T00:51:57.787 に答える