0

因此,我有一个数组(使用 得到这个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是数组。问题是,我不知道如何遍历“父”数组中的数组,因此,“??”

4

2 回答 2

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$needlearray_keys

于 2013-02-12T22:29:55.140 回答
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;
        }
    }
}

本质上,这段代码的作用是遍历外部数组,并为每个元素循环遍历内部数组,如果它找到您想要的帖子 ID,它将设置一个在循环之外初始化的变量,因此在您跳出循环后您将拥有相应的密钥。


编辑

这实际上是一个非常糟糕的答案,我意识到您并不需​​要内部循环,因为您知道要在内部数组中检查什么键...无论如何,您似乎使用了另一个答案,所以这几乎没有实际意义.

于 2013-02-12T22:03:17.557 回答