Php 在数组()中搜索变量

Php 在数组()中搜索变量,php,arrays,search,variables,function,Php,Arrays,Search,Variables,Function,如果我有这个代码: $result = 1; $square = array( "00" => -1, "0" => 0, "1" => 1, ); 并想知道$result是否等于$square的任何数组值(-1、0或1) 我猜应该有一个函数将一个变量与所有数组的值进行比较,并相应地返回TRUE或FALSE 如果没有这样的功能,我愿意接受任何建议和/或您可能隐藏在袖子下的解决方法:) 提前感谢应该对您有用 if(in_array($result, $square)) {

如果我有这个代码:

$result = 1;

$square = array(

"00" => -1,
"0" => 0,
"1" => 1,

);
并想知道$result是否等于$square的任何数组值(-1、0或1)

我猜应该有一个函数将一个变量与所有数组的值进行比较,并相应地返回TRUE或FALSE

如果没有这样的功能,我愿意接受任何建议和/或您可能隐藏在袖子下的解决方法:)

提前感谢

应该对您有用

if(in_array($result, $square)) {
   //$result is in there.
}
if(数组搜索($result,$square)==false){echo“DNE”}

请注意
==

编辑:切换功能参数-抱歉

您正在查找:


php中有一个函数可以实现这一点。它被称为
array_search()对于上面的代码,您将使用

if(false !== array_search($square, $result)){
echo "Found something";
}

可以找到文档的链接。查看底部的代码示例。

如果您的数组很大(>500个元素),则需要执行以下操作:

$flip_square = array_flip($square);
return isset($flip_square["string_to_search_for"]);

如果你不这样做,它会非常慢。这比_array()中的
快了很多倍。请注意,这个函数对于大型数组来说速度非常慢。@mattbasta:还有其他选择吗?@mattbasta我刚才不太在乎速度,但是谢谢你的解释@meagar,他没有在数组中使用
看起来数组中的
更简洁。使用
数组中的
键\u exists
而不是
isset
,这将在奇怪的角落中返回false,您搜索的值最初存在于索引
null
中。如果OP计划使用它,仅供参考。。如果任何值不是(或将永远是)整数或字符串,则它将不起作用。@David Titarenco:准确地说:不是标量值,而是标量值。
@zerkms:对不起,你错了。不能翻转浮点或布尔值,它们都是标量:
array\u flip()[function.array flip]:只能翻转字符串和整数值!在test.php第3行
@zerkms不,我没有,我同意你的看法。我已经知道,
array\u flip
比数组中的
快一个数量级。正如我所说,这是关于上下文的。如果返回[0]值,您需要与
===
进行比较,以避免出现问题。该示例包含一个严重的缺陷,如果您正在搜索的元素的索引在强制为bool时计算为
false
,则该示例将失败。您必须使用
if(false!==array\u search(…)
。感谢您注意到……我在上面的示例中修复了它,效果非常好。非常感谢你!
$flip_square = array_flip($square);
return isset($flip_square["string_to_search_for"]);