从 PHP 5.5.X 开始,foreach 可以接受非标量项。因此返回值可以是任何东西;)
(PHP 5, PHP 7, PHP 8)
Iterator::key — 返回当前元素的键
此函数没有参数。
成功时返回 标量,失败时返回 null
。
失败时发出 E_NOTICE
。
对于某些 Iterator 类型,此函数可能返回任何类型,而不仅仅是标量。特别是,编写一个生成任意键的生成器函数非常简单
<?php
function foo() {
yield null => 1;
yield new stdclass => 2;
}
?>
并将所有内容转换为整数,除了字符串,因此在 php 中的后处理可以是
public function key() {
$yourKey = $this->createYourKey();
if (is_object($yourKey) || is_array($yourKey))
throw new Exception('数组和对象不允许。');
elseif (is_string($yourKey))
return $yourKey;
else
return (int) $yourKey;
}