Issues (172)

src/functions/iterable_column.php (2 issues)

Severity
1
<?php /** @noinspection PhpVariableVariableInspection */
2
3
declare(strict_types=1);
4
5
namespace Improved;
6
7
/**
8
 * Get a key and/or value of each element of the iterable.
9
 *
10
 * The elements need to be objects or arrays.
11
 * For scalar elements or if the property/index doesn't exist, the value and/or key will be null.
12
 *
13
 * @param iterable $iterable
14
 * @param mixed|null $valueColumn  Value property/index, null for complete value
15
 * @param mixed|null $keyColumn    Key property/index, null to keep current keys
16
 * @return \Generator
17
 */
18 24
function iterable_column(iterable $iterable, $valueColumn, $keyColumn = null): \Generator
0 ignored issues
show
Function Improved\iterable_column() has parameter $iterable with no value type specified in iterable type iterable.
Loading history...
Function Improved\iterable_column() return type has no value type specified in iterable type Generator.
Loading history...
19
{
20 23
    foreach ($iterable as $key => $value) {
21
        switch (true) {
22 22
            case is_array($value) || (is_object($value) && $value instanceof \ArrayAccess):
23 15
                $key = isset($keyColumn) ? ($value[$keyColumn] ?? null) : $key;
24 15
                $value = isset($valueColumn) ? ($value[$valueColumn] ?? null) : $value;
25 15
                break;
26 15
            case is_object($value) && !$value instanceof \DateTimeInterface:
27 15
                $key = isset($keyColumn) ? ($value->$keyColumn ?? null) : $key;
28 15
                $value = isset($valueColumn) ? ($value->$valueColumn ?? null) : $value;
29 15
                break;
30
            default:
31 1
                $key = isset($keyColumn) ? null : $key;
32 1
                $value = isset($valueColumn) ? null : $value;
33 1
                break;
34
        }
35
36 22
        yield $key => $value;
37
    }
38
}
39