让我以PHP Documentation中的数组键作为引号开始这个问题>
如果未指定键,则采用现有整数索引的最大值,并且新键将是该最大值加1(但至少为0)。如果尚无整数索引,则键将为0(零)。
所以让我们在下面的代码中尝试一下:
print_r(['4'=> 1, 2, 3]); // output: Array([4] => 1 [5] => 2 [6] => 3)
* 注意,数组中的第一个键是字符串witch将由PHP强制转换为整数类型[4]
现在让我们在生成器函数中尝试一下,并逐一产生数组键,看看会发生什么
function foo() { yield '4' => 1; yield 2; yield 3; } print_r(iterator_to_array(foo()));// output: Array([4] => 1 [0] => 2 [1] => 3)
我知道生成器的行为不像数组,但是让我们看看当第一个键实际上是整数时会发生什么:
function foo() { yield 4 => 1; // Note 4 here is an integer yield 2; yield 3; } print_r(iterator_to_array(foo())); // output: Array([4] => 1 [5] => 2 [6] => 3)
输出符合预期。
为什么只有在PHP将生成器的键转换为生成器时才会发生这种情况?这是正常现象吗?
让我以PHP文档中数组键的引号开始这个问题,如果未指定键,则采用现有整数索引的最大值,而新的键将是最大值...
在您的上下文中,收益使用数组规则。