PHP array column-как сохранить ключи?

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

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

    var_dump(array_column($items,"id"));

результате

array (size=3)
  0 => int 5
  1 => int 6
  2 => int 7

но как я могу сохранить ключ $items Так что я могу получить это ниже?

array (size=3)
  1 => int 5
  3 => int 6
  4 => int 7

6 ответов


foreach(key($parameters) as $key)
{
print($key);
}

при желании вы также можете сохранить этот результат в других переменных.

и чтобы показать оба ключа и значения, попробуйте это:

foreach ($parameters as $key => $value) {
echo $key . ' = ' . $value . '<br>';
}

посмотрите, может ли это помочь

array_filter(array_combine(array_keys($items), array_column($items, 'id')));

ища то же решение и комбинируя некоторые трюки, я создал это:

$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'
            )
        )
    )
);

результат 'test3'.

работа с номерами массивов или именованными массивами.


Я думаю, что это самый быстрый способ, чтобы держать ключи без циклов и итераций

array_diff(array_combine(array_keys($items), array_column($items, 'id')), [null])

Другой альтернативой является использование использование array_map

$result = array_map(function($item) {return $item['id'];}, $items);


для вашего примера только с одним столбцом id

array_map('current', $items);