0

重複の可能性:
in_array()および多次元配列

このコードを使用してデータベースから返された次の配列を取得しました。

$skus = array();
$result = mysql_query($sql);
if($result){
  while($rows = mysql_fetch_array($result)){
      $skus[]=$rows;
  }
}

結果:

Array (
    [0] => Array {
            [0] => PUBELI
            [group_sku] => PUBELI
        )
    [1] => Array (
            [0] => PUBESSENTIALS
            [group_sku] => PUBESSENTIALS
        )
    [2] => Array (
            [0] => PUBMGRPROGROUPED
            [group_sku] => PUBMGRPROGROUPED
        )
    [3] => Array (
            [0] => PUB25GROUPED
            [group_sku] => PUB25GROUPED
        )
)

in_arrayを使用してこの値を探しています:

if (in_array('PUBESSENTIALS', $skus))

そしてそれはfalseを返します。私はこれを正しく行っていますか?

DB内の値が文字列である場合、配列値が引用符で囲まれないのはなぜですか?

4

3 に答える 3

1

$ skusが上記の完全な配列であるとすると、$ skuには子配列が含まれているため、「PUBESSENTIALS」は$skusに含まれません。

ただし、in_array('PUBESSENTIALS'、$ skus [1])はtrueを返します。

各$skus要素をループして、その子要素でin_array(value、childArray)を確認してみてください

于 2012-10-15T19:07:12.440 に答える
1

最初のアレイのみを調べており、他のアレイは調べていません。それぞれを調べて、すべてのサブアレイをテストする必要があります。このような何かが仕事をすることができます:

foreach($skus as $sku) {
    if (in_array('PUBESSENTIALS', $sku)) {
        return true;
    }
}
于 2012-10-15T19:12:33.513 に答える
1

MySqlで何かを行う可能性がある場合は、PHPを使用しないでください。このソリューションを試してください:

$sql = "SELECT * FROM table WHERE str = 'PUBESSENTIALS'"; // some query just add WHERE

$result = mysql_query($sql);
if($result) $Row = mysql_fetch_array($result)
于 2012-10-15T19:35:13.357 に答える