Как набрать цикл, который перебирает массив смешанных
Учитывая этот код ( 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
3 ответа
Если я правильно понял, это может помочь вам:
foreach (array_keys(keys()) as $k) {
echo gettype(keys()[$k])."\n";
}
Вы могли бы использовать for
цикл вместо foreach
цикл, чтобы исправить предупреждение.
$keys = keys();
for( $i = 0; $i < count( $keys); $i++ ) {
echo gettype( $keys[$i] );
}
Вот ссылка в Псалме https://psalm.dev/r/20c1cbab73
Это ошибка псалма.
См. Github: INFO: MixedAssignment - Невозможно назначить смешанный тип | при использовании строкового массива ключ № 1281,
И это было исправлено muglug в этом https://github.com/vimeo/psalm/commit/6033345694727d7c3cf84adc76507c3785ed0295