使用in_array检查数组中是否存在变量

时间:2015-12-17 06:06:00

标签: php arrays

我使用in_array来查看$ appid是否包含在变量$ r中。这是我的数组$ r的print_r(数组中的appids总是在改变):

$array = array(0 =>
    array(0 => 356050, 'appid' => 356050),
    1 => array(0 => 338040, ' appid' => 338040),
    2 => array(0 => 263920, 'appid' => 263920),
    3 => array(0 => 411740, 'appid' => 411740)
);

$ appid等于263920,它包含在$ r数组中,但尽管符合标准,但它的工作原理是'没有回应。任何帮助都会受到赞赏,因为我不明白我的php声明有什么缺陷。

if (in_array($appid, $r)) {
echo 'it works'; // criteria met
}

3 个答案:

答案 0 :(得分:2)

你有一个包含数组的数组。函数in_array()查看外部数组的内容,而不会递归到内部数组中。如果你这样做会发现一些东西

if (in_array(array(0 => $appid, 'appid' => $appid), $r) { 
    echo 'It works'; 
}

答案 1 :(得分:0)

这是一种古老的方式,但这会奏效。 由于您的输入是一个多维数组,您需要循环遍历数组并搜索该值是否在数组中。

<?php
$array = array(0 =>
    array(0 => 356050, 'appid' => 356050),
    1 => array(0 => 338040, ' appid' => 338040),
    2 => array(0 => 263920, 'appid' => 263920),
    3 => array(0 => 411740, 'appid' => 411740)
);
foreach ($array as $value) {
    if (in_array($appId, $value)) {
        echo 'Found';
    }
}
?>

使用返回数据进行关键特定搜索:How to search by key=>value in a multidimensional array in PHP

我希望这会有所帮助。

答案 2 :(得分:0)

您可以使用。

来实现这一目标
SELECT unpiv.[Day] AS Days_of_Week, unpiv.[Count] AS Service_Count,t2.Prod_A,t2.Prod_B,t2.Prod_C
FROM ( SELECT t.* FROM Table1 t) d
    UNPIVOT
    (
      [Count]
      for [Day] in (Sun, Mon, Tue, Wed, Thurs, Fri)
    ) unpiv 
INNER JOIN Table2 t2 ON t2.Days_of_week = unpiv.days_of_week
WHERE unpiv.[Count] > 0

这会奏效。你应该这样称呼它:

function searchAppID($id, $array) {
   foreach ($array as $key => $val) {
       if ($val['appid'] === $id) {
           return $key;
       }
   }
   return null;
}

如果你有n级数组,那么你可以使用上面的函数,只需要很少的修改。 如果您需要,请告诉我。