Как набрать цикл, который перебирает массив смешанных

Учитывая этот код ( 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

Другие вопросы по тегам