我有一个看起来像这样的数组
$myArray = Array
(
[Standardbox] => Array
(
[details] => Array
(
[name] => Standardbox
)
[resources] => Array
(
[0] => Array
(
[resourceId] => 1
[resourceName] => Knife
[amount] => 1
[unit] => 2
)
[1] => Array
(
[resourceId] => 2
[resourceName] => Fork
[amount] => 1
[unit] => 2
)
)
)
)
,我想检查数组中是否存在value
1
(刀)的key
中的resourceId
。
我在stackoverflow上找到了一些功能,但是对于我的目的并没有真正起作用:
这看起来很有希望,但我认为它并不认为数组是多维的:
function multi_key_in_array($needle, $haystack, $key)
{
foreach ($haystack as $h)
{
if (array_key_exists($key, $h) && $h[$key]==$needle)
{
return true;
}
}
return false;
}
然后致电
if(multi_key_in_array(1, $myArray, "resourceId"))
{
// It is present in the array
}
我们非常感谢您的帮助!
答案 0 :(得分:2)
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post)) {
<input type="submit" value="Match" />
}
答案 1 :(得分:1)
您可以将array_column
与in_array
一起使用
$find = 1;
$r = in_array($find,array_column($myArray['Standardbox']['resources'], 'resourceId'));
echo $r;
答案 2 :(得分:1)
function arr_find_recursive($key, $value, $array)
{
foreach ($array as $arr_key => $arr_val)
{
if (is_array($arr_val))
{
if (arr_find_recursive($key, $value, $arr_val))
{
return true;
}
}
else
{
if ($arr_key === $key && $arr_val === $value)
{
return true;
}
}
}
return false;
}
//Call function
if (arr_find_recursive("resourceId", 2, $myArray))
{
echo "exists";
}
else
{
echo "not found";
}
此函数是递归的,可以在任何深度的数组中找到键值对。
答案 3 :(得分:0)
$result = in_array('1', array_column($myArray['Standardbox']['resources'], 'resourceId'));
if($result)
echo $result.' - found';
else
echo 'Not found';
答案 4 :(得分:0)
据我了解,您需要检查resourceId值之一是否为1。可以通过遍历数组值来做到这一点。例如:
function IsResourcePresent($myArray) {
$resources = $myArray['Standardbox']['resources'];
for ($count = 0; $count < count($resources); $count++) {
if ($resources[$count]['resourceId'] == '1') return true;
}
return false;
}
IsResourcePresent($myArray);