in_array()工作正常,但抛出错误?

时间:2013-01-22 12:26:11

标签: php

AFAIK - in_array()应该返回TRUEFALSE

在我的情况下,它确实验证为真 - 但仍然抛出错误:

  

[function.in-array]:第二个参数的错误数据类型

这一行是这样的:

in_array($key,$instance['cfl2']);

$instance['cfl2']是经过验证的array,如下所示:

array(2) { [0]=> string(8) "price" [1]=> string(6) "age" }

我的问题是:

  • 我做错了什么。
  • 为什么它会抛出错误(但仍能正常工作并返回true)
  • 问题出现是因为我使用某种嵌套数组? (意味着数组项$instance['cfl2']本身就是一个数组?

我也尝试了$is = $instance['cfl2']in_array($key,$is) - 但结果是同样的错误。

2 个答案:

答案 0 :(得分:2)

您可以将变量强制转换为数组以避免此错误:

in_array($key, (array) $instance['cfl2'])

答案 1 :(得分:0)

in_array()将以in_array("search", $instance)处理。

如果您使用嵌套或多元数组,那么in_array()将不起作用,您应该编写一个单独的函数来处理它。或者使用array_key_exists()代替。它适用于某些特定情况。了解您的要求是否得到满足。

if(array_key_exists($key,$instance['cfl2']))