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