好的,我有这个数组: -
0 =>
array (size=2)
'receiver_telmob' => string '0707105396' (length=10)
0 => string '0707105396' (length=10)
1 =>
array (size=2)
'receiver_telmob' => string '0704671668' (length=10)
0 => string '0704671668' (length=10)
2 =>
array (size=2)
'receiver_telmob' => string '0707333311' (length=10)
0 => string '0707333311' (length=10)
我正在尝试使用in_array
搜索此数组。但是,我从未获得任何真正的价值。
这就是我要做的事情: -
$searchnumber = '0707333311';
if(in_array($searchnumber,$arrayAbove))
{
//do something
}
但if总是导致错误的输出。我猜我在这里没有正确使用in_array。我应该纠正什么来使它工作? 感谢。
答案 0 :(得分:0)
in_array()
不适用于多维数组。你需要这样的东西 -
function in_multi_array($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_multi_array($needle, $item, $strict))) {
return true;
}
}
return false;
}
然后你可以这样做 -
$searchnumber = '0707333311';
if(in_multi_array($searchnumber,$arrayAbove))
{
//do something
}
答案 1 :(得分:0)
您无法将in_array
用于多维数组!
但是这个功能对你有用:
<?php
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
?>
然后你可以像这样使用它:
echo in_array_r("0707333311", $arrayAbove) ? 'true(found)' : 'false(not found)';
答案 2 :(得分:0)
您必须使用in_array
for each
子数组。
所以如果你有一个像
这样的一维数组 [1,4,43,2,5,4]
您可以致电in_array
但是当您拥有多维时,您必须遍历顶层维并调用in_array
for($i = 0;$i < arr.count(); $i++){
if(in_array($searchnum, $arr[$i]){
//do something
}
}
注意:上面的示例仅适用于2D阵列,只是为了演示我在说什么
答案 3 :(得分:0)
试试这个:
function in_array_recursive($needle, $haystack) {
foreach($haystack as $item) {
if ($needle = $item || is_array($item) && in_array_recursive($needle, $item))
return true;
}
}
return false;
}
$searchnumber = '0707333311';
if(in_array_recursive($searchnumber,$arrayAbove))
{
//do something
}
答案 4 :(得分:0)
$array = array(
"0" => array(
"receiver_telmob" => "0707105396",
"0" => "0707105396"
),
"1" => array(
"receiver_telmob" => "0704671668",
"0" => "0704671668"
),
"2" => array(
"receiver_telmob" => "0707333311",
"0" => "0707333311"
)
);
$searchnumber = "0707333311";
foreach($array as $v) {
if ($v['receiver_telmob'] == $searchnumber) {
$found = true;
}
}
echo (isset($found) ? 'search success' : 'search failed');