Php 在数组中查找字符串

Php 在数组中查找字符串,php,arrays,Php,Arrays,我有一个动态数组,在提交$u帖子后生成 Array ( [0] => Array ( [0] => lng_criteria_balance [1] => Array ( [0] => lng_type_balance_positive ) ) [1] => Arr

我有一个动态数组,在提交$u帖子后生成

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 :(';
 }

对于多维数组,您需要递归地检查它

这样做:

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';

是的,因为在数组中,只有数字键。 使用foreach遍历子数组,并在其中搜索

$inArray = false;
foreach ($array as $key => $subarray) {
    if (in_array('needle', $subarray)) {
        $inArray = true;
        break;
    }

}

试试这个…

<?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 :(';
 }
?>


在数组中
只在一个数组中搜索,而不是多维数组。它总是在第0个索引中吗?或者它可以在任何键的任何级别?为了获得最佳性能,我认为您的数组应该如下所示:
数组([lng\u标准\u平衡]=>lng\u类型\u平衡阳性,[lng\u标准\u性别]=>F,[lng\u标准\u注释]=>cane,)
。它还简化了使用它的代码,并使PHP标准函数a.s.o的使用成为可能。
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;
}