自 PHP 5.5.X 起,foreach 可以接受非純量項目。所以返回值可以是任何東西 ;)
(PHP 5, PHP 7, PHP 8)
Iterator::key — 傳回目前元素的鍵值
此函式沒有參數。
成功時傳回 scalar,失敗時傳回 null
。
失敗時發出 E_NOTICE
。
對於某些迭代器類型,此函式可能會返回任何類型,而不僅僅是純量。尤其,撰寫產生任意鍵值的產生器函式非常簡單
<?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;
}