我有一个数组(使用var_dump
得到了这个):
array
0 =>
array
'post_id' => string '6' (length=1)
1 =>
array
'post_id' => string '9' (length=1)
当我只有post_id
时,我想获得密钥。例如,如果我有'6',我希望'0'返回,如果我'9',我想要'1'。我试过了:
$key = array_keys($subs, array_keys($subs[??], 6));
假设$subs
是数组。问题是,我不知道如何遍历“父”数组中的数组,因此,'??'
答案 0 :(得分:1)
$post_id_to_find = '6';
$key = '';
foreach ($subs as $k1 => $v1)
{
foreach ($v1 as $k2 => $v2)
{
if ($post_id_to_find == $v2)
{
$key = $k1;
break;
}
}
}
这个代码所做的基本上是循环遍历外部数组,并且每个元素循环遍历内部数组,如果它找到了你想要的post id,它将设置一个在循环外部被初始化的变量,所以在你爆发之后你会得到合适的钥匙。
修改强>
这实际上是一个非常糟糕的答案,我意识到你并不真的需要内循环,因为你知道要在内部数组中检查什么键...无论如何,你似乎使用了另一个答案,所以这是几乎没有实际意义。
答案 1 :(得分:1)
我会使用array_filter()
和use
来执行此操作。像这样:
$array; // your array
$needle; // the value you are looking for
$filtered_array = array_filter($array, function ($element) use ($needle) {
return ($element['post_id'] === $needle);
});
$matching_keys = array_keys($filtered_array);
array_filter()
会将输入数组过滤为只有post_id
值与$needle
值匹配的数组元素数组。在应用过滤器后,您可以使用array_keys
获取剩余元素的键值。