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
$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 に答える
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 に答える