PHP array_column - 如何保存密钥?

lau*_*kok 12 multidimensional-array php-5.5

    $items = array(
        1 => [
            "id" => 5
        ],

        3 => [
            "id" => 6
        ],
        4 => [
            "id" => 7
        ],
    );

    var_dump(array_column($items,"id"));
Run Code Online (Sandbox Code Playgroud)

结果,

array (size=3)
  0 => int 5
  1 => int 6
  2 => int 7
Run Code Online (Sandbox Code Playgroud)

但是我怎么能保持钥匙,$items所以我可以在下面得到这个?

array (size=3)
  1 => int 5
  3 => int 6
  4 => int 7
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 21

看看这是否有帮助

array_filter(array_combine(array_keys($items), array_column($items, 'id')));
Run Code Online (Sandbox Code Playgroud)

  • 即使某些项目没有“id”,这是否有效? (2认同)

Igo*_*kov 6

我认为这是保持键没有循环和迭代的最快方法

array_diff(array_combine(array_keys($items), array_column($items, 'id')), [null])
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,但也请解释一下你的答案。它可以帮助大家理解为什么你使用这些方法。 (2认同)

小智 5

寻找相同的解决方案并结合一些技巧,我创建了这个:

$userdb=Array
(
    "test1" => array
    (
        'uid' => '100',
        'name' => 'Sandra Shush',
        'url' => 'urlof100'
    ),
    "test2" => array
    (
        'uid' => '5465',
        'name' => 'Stefanie Mcmohn',
        'pic_square' => 'urlof100'
    ),
    "test3" => array
    (
        'uid' => '40489',
        'name' => 'Michael',
        'pic_square' => 'urlof40489'
    )
);

echo $key = array_search(
    40489,
    array_filter(
        array_combine(
            array_keys($userdb),
            array_column(
                $userdb, 'uid'
            )
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

结果是'test3'。

处理数组编号或命名数组。


kil*_*129 5

最简单且最高效的方法可能是使用

array_combine(array_keys($data), array_column($data, 0));
Run Code Online (Sandbox Code Playgroud)


小智 -3

foreach(key($parameters) as $key)
{
print($key);
}
Run Code Online (Sandbox Code Playgroud)

如果需要,您还可以将该结果存储在其他变量中。

要显示键和值,请尝试以下操作:

foreach ($parameters as $key => $value) {
echo $key . ' = ' . $value . '<br>';
}
Run Code Online (Sandbox Code Playgroud)

  • 这如何回答使用“array_column”的问题? (3认同)