我有这个动态数组,在提交$ _POST之后生成。
Array
(
[0] => Array
(
[0] => lng_criteria_balance
[1] => Array
(
[0] => lng_type_balance_positive
)
)
[1] => Array
(
[0] => lng_criteria_sex
[1] => Array
(
[0] => F
)
)
[2] => Array
(
[0] => lng_criteria_note
[1] => Array
(
[0] => cane
)
)
)
数组是可变的,它也是关键。 我需要搜索是否存在指定的值。我试过这个但是
<?php
if (in_array('lng_criteria_balance', $args))
{
echo 'found!';
}
else
{
echo 'not found :(';
}
但它打印“未找到”。 谢谢。
PS我可以用foreach循环检查,但我不会使用它(为了获得最佳性能)
答案 0 :(得分:3)
对于多维数组,您需要递归检查它。
这样做:
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("lng_criteria_balance", $your_array_variable) ? 'found' : 'not found';
答案 1 :(得分:1)
是的,因为在您的数组中,只有数字键。 使用foreach迭代子数组,然后搜索。
$inArray = false;
foreach ($array as $key => $subarray) {
if (in_array('needle', $subarray)) {
$inArray = true;
break;
}
}
答案 2 :(得分:1)
试试这个......
<?php
$arr = array(0 => array("id"=>1,"temp"=>"lng_criteria_balance"),
1 => array("id"=>2,"temp"=>"test"),
2 => array("id"=>3,"temp"=>"test123")
);
function search_in_array($srchvalue, $array)
{
if (is_array($array) && count($array) > 0)
{
$foundkey = array_search($srchvalue, $array);
if ($foundkey === FALSE)
{
foreach ($array as $key => $value)
{
if (is_array($value) && count($value) > 0)
{
$foundkey = search_in_array($srchvalue, $value);
if ($foundkey != FALSE)
return $foundkey;
}
}
}
else
return $foundkey;
}
}
if(!empty(search_in_array('lng_criteria_balance',$arr)))
{
echo 'found!';
}
else
{
echo 'not found :(';
}
?>
答案 3 :(得分:1)
function multi_in_array_r($needle, $haystack) {
if(in_array($needle, $haystack)) {
return true;
}
foreach($haystack as $element) {
if(is_array($element) && multi_in_array_r($needle, $element))
return true;
}
return false;
}