Skip to content

Commit f06e44a

Browse files
committed
Dumper::dumpArray() hides keys only in non-associative arrays [Closes #51]
1 parent ea0c70b commit f06e44a

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/PhpGenerator/Dumper.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,10 @@ private function dumpArray(array &$var, array $parents, int $level, int $column)
9797
$outWrapped = "\n$space";
9898
$parents[] = $var;
9999
$counter = 0;
100+
$hideKeys = ($tmp = array_keys($var)) && is_int($tmp[0]) && $tmp === range($tmp[0], $tmp[0] + count($var) - 1);
100101

101102
foreach ($var as $k => &$v) {
102-
$keyPart = $k === $counter ? '' : $this->dumpVar($k) . ' => ';
103+
$keyPart = $hideKeys && $k === $counter ? '' : $this->dumpVar($k) . ' => ';
103104
$counter = is_int($k) ? max($k + 1, $counter) : $counter;
104105
$outInline .= ($outInline === '' ? '' : ', ') . $keyPart;
105106
$outInline .= $this->dumpVar($v, $parents, 0, $column + strlen($outInline));

tests/PhpGenerator/Dumper.dump().phpt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,12 @@ Assert::same('[]', $dumper->dump([]));
4343
Assert::same('[$s]', $dumper->dump([new PhpLiteral('$s')]));
4444

4545
Assert::same('[1, 2, 3]', $dumper->dump([1, 2, 3]));
46-
Assert::same("['a', 7 => 'b', 'c', '9a' => 'd', 'e']", $dumper->dump(['a', 7 => 'b', 'c', '9a' => 'd', 9 => 'e']));
46+
Assert::same("['a']", $dumper->dump(['a']));
47+
Assert::same("[2 => 'a']", $dumper->dump([2 => 'a']));
48+
Assert::same("[2 => 'a', 'b']", $dumper->dump([2 => 'a', 'b']));
49+
Assert::same("[-2 => 'a', -1 => 'b']", $dumper->dump([-2 => 'a', -1 => 'b']));
50+
Assert::same("[-2 => 'a', 0 => 'b']", $dumper->dump([-2 => 'a', 'b']));
51+
Assert::same("[0 => 'a', -2 => 'b', 1 => 'c']", $dumper->dump(['a', -2 => 'b', 'c']));
4752

4853
$dumper->wrapLength = 100;
4954
same("[
@@ -54,7 +59,7 @@ same("[
5459
]", $dumper->dump([['a', 'loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong']]));
5560

5661
Assert::same(
57-
"['a' => 1, [\"\\r\" => \"\\r\", 2], 3]",
62+
"['a' => 1, 0 => [\"\\r\" => \"\\r\", 0 => 2], 1 => 3]",
5863
$dumper->dump(['a' => 1, ["\r" => "\r", 2], 3])
5964
);
6065

0 commit comments

Comments
 (0)