0

鉴于此代码(https://psalm.dev/r/156e52eb66):

<?php

function keys(): array
{
  return ['foo', 'bar'];
}

// no lines above can be changed

foreach (keys() as $k) {
  echo gettype($k);
}

keys假设函数不受我们控制(在不同的项目中)并且它有效地返回mixed( ) 的数组,它会如何键入它array<array-key, mixed>

所以,一个人可能只会改变循环并围绕它。

甚至可能吗?

UPD:我报告了 https://github.com/vimeo/psalm/issues/2025

4

3 回答 3

1

如果我做对了,这可能会对您有所帮助:

foreach (array_keys(keys()) as $k) {
 echo gettype(keys()[$k])."\n";
}
于 2019-08-16T05:34:12.930 回答
1

您可以使用for循环而不是foreach循环来修复警告。

$keys = keys();
for( $i = 0; $i < count( $keys); $i++ ) {
  echo gettype( $keys[$i] );
}

这是诗篇中的链接https://psalm.dev/r/20c1cbab73

于 2019-08-16T05:40:46.630 回答