Skip to content

The array_keys function casts the keys #22817

Description

@tomasnajman

Description

When using the array_keys function, a cast from string to int occurs. The function should not change the value if the text value of the key looks like a number.

The following code:

<?php
$array = ['first' => '1', '2' => '2'];
$keys = \array_keys($array);
echo \json_encode($keys);

Resulted in this output:

["first",2]

But I expected this output instead:

["first","2"]

PHP Version

PHP 8.4.23 (cli) (built: Jul  1 2026 04:47:16) (NTS Visual C++ 2022 x64)
Copyright (c) The PHP Group
Built by The PHP Group
Zend Engine v4.4.23, Copyright (c) Zend Technologies
    with the ionCube PHP Loader v15.5.0, Copyright (c) 2002-2026, by ionCube Ltd.

Operating System

Windows 11

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions