Как я могу реализовать логику литья ключей массива PHP в PHP? Одна наивная реализация может заключаться в следующем.Userland реализация литья ключей массива PHP
function castKey($key) {
$array = [$key => null];
return key($array);
}
Однако, кажется, расточительно выделять избыточный массив. Я бы предпочел точно подражать логике каста. Конечно, было бы полезно увидеть и понять исходный код, но я не уверен, где его найти.
Эмпирически я заметил, что любое скалярное значение может быть сохранено в виде ключа, используя следующие правила кастинга.
- Целые числа хранятся дословно.
- Строки хранятся в виде строк, если они не являются похожими на целое число. Я не знаю точно, как PHP определяет, что строка выглядит как целое; будь то просто
^\d+$
или что-то более сложное. - Булевы отлиты целыми числами.
- Поплавки отлиты целыми числами.
не плавает, как ключи массива становятся строками? – cHao
См. Правила для ключей массива в примере: http://php.net/manual/en/language.types.array.php#example-99 Также исходный код является открытым исходным кодом и находится на github: https: // github.com/php/php-src – Rizier123