<?php
[$a, [$b]] = $array;

function test()
{
    $a = [];

    $b = [];

    $c = [
            'a' => 1,
         ];
}

class TestClass
{
    public $good = [
                    'width'  => '',
                    'height' => '',
                   ];

    private $_bad = [
                    'width' => '',
                    'height' => ''
                     ];


    public function test()
    {
        $truck = [
                 'width' => '',
                  'height' => '',
                 ];

        $plane = [
                'width' => '',
                  'height' => '',
                 ];

        $car = [
                'width' => '',
                'height' => '',
               ];

        $bus = [
                'width'  =>   '',
                'height' => ''
               ];

        $train = [
                   TRUE,
                  FALSE,
                  'aaa'
                 ];

        $inline = ['aaa', 'bbb', 'ccc'];
        $inline = ['aaa'];
        $inline = ['aaa'];

        $bigone = [
                   'name' => 'bigone',
                   'children'   => [
                                    '1a' => 'child',
                                    '11b' => 'child',
                                    '111c'      => 'child',
                                    'children'  => [
                                                    'child' => 'aaa',
                                                   ],
                                   ],
                   'short_name' => 'big'
                  ];
    }

}//end class

$value = [ ];
$value = [  ];
$value = ['1'=>$one, '2'  =>  $two, '3'=> $three, '4' =>$four];
$value = ['1'=>$one];

if (in_array('1', ['1','2','3']) === TRUE) {
    $value = in_array('1', ['1'  ,   '2',     '3','4']);
}

$value = [
          '1'=> TRUE,
          FALSE,
          '3' => 'aaa',];

$value = [
          '1'=> TRUE,
          FALSE,
         ];

$value = [
          TRUE,
          '1' => FALSE,
         ];

$value = [1,
          2 ,
          3 ,
         ];

$value = [1 => $one,
          2 => $two ,
          3 => $three ,
         ];

$value = [
          'tag'   => $tag,
          'space' => $this->_getIndentation($tag, $tagElement),
         ];

$expected = [
             [
              '1' => 1,
              '1' => 2,
             ],
            ];

$expected = [
             [
              '1' => 1,
              '1' => 2
             ]
            ];

// Space in second arg.
$args = [
         '"'.$this->id.'"',
         (int) $hasSessions,
        ];

// No errors.
$paths = [
          Init::ROOT_DIR.'/Systems'   => 'Systems',
          Init::ROOT_DIR.'/Installer' => 'Systems',
         ];

$x = [
     ];

$x = ['test'
     ];
$x = ['test',
     ];
$x = ['name' => 'test',
     ];

$x = [
      $x,
     ];

$func = [
         $x,
         'get'.$x.'Replacement'
        ];

$array = [
          'input_one' => 'one',
          'inputTwo'  => 'two',
          'input_3'   => 3,
         ];

$array = [
          'input_one',
          'inputTwo',
          'input_3',
         ];

// Malformed
$foo = [1
, 2];

$listItems[$aliasPath] = ['itemContent' => implode('<br/>', $aliases)];

$listItems[$aliasPath] = [
                          'itemContent' => implode('<br/>', $aliases)
                         ];

$x =
     [
      $x,
      $y,
     ];

$x =
[
      $x,
      $y,
     ];

$x = [

      $x,
      $y,
     ];

$test = [
         'test' => TestFunction::blah(
             $value1,
             $value2
         ),
        ];

$c = ['a' => 1,];
$c->{$var}[ ] = 2;

$foo = ['[',']',':',"\n","\r"];
$bar = ['&#91;','&#93;','&#58;','&#10;','&#13;'];

function foo()
{
    return [$a, $b->screen];
}

$array = [
          'name'       => 'contactSubject',
          'required'   => TRUE,
          'validators' => [
                           new \Zend\Validator\InArray(['haystack' => array_keys($aSubjects)]),
                          ],
         ];

$var = [
        'ViewHelper',
        ['Foo'],
        'Errors',
       ];

$data = [
         'first',
         'second',
         'third',
         // Add more here
        ];

$data = [
         'first',
         'second',
         //'third',
        ];

$data = [
         'first',
         'second'
         //'third',
        ];

$foo = [
        $this->getViewName() . '.id'    => 'value',
        $this->getViewName() . '.title' => 'value',
       ];

$foo = [
        $this->getViewName() . '.id',
        $this->getViewName() . '.title',
       ];

$weightings = [
               T_CLOSURE             => 100,

               /*
                   Conditions.
               */

               T_WHILE               => 50,

               /*
                   Operators and arithmetic.
               */

               T_BITWISE_AND         => 8,

               T_BOOLEAN_AND         => 5,

               /*
                   Equality.
               */

               T_IS_GREATER_OR_EQUAL => 5,
              ];

foreach ([
        'foo'    => 'bar',
        'foobaz' => 'bazzy',
    ] as $key => $value) {
}

$ids = [
        '1', // Foo.
        '13', // Bar.
       ];

[
 'key1' => function($bar) {
    return $bar;
 },
 'key2' => function($foo) {
    return $foo;
 },
 'key3' => function($bar) {
    return $bar;
 }
];

[
 'key1' => [
            '1',
            '2',
           ]
];

$var = [
        'tab_template'   => '
        <li>%s</li>',
        'panel_template' => '
        <div id="%s">
            %s
        </div>',
       ];

function test() : array
{
    return [];
}

$fields = [
           'id'    => ['type' => 'INT'],
           'value' => ['type' => 'VARCHAR']];

get_current_screen()->add_help_tab( [
                                     'id' => <<<EOD
Here comes some text.
EOD
,
                                    ] );

echo [1][0];
echo 'PHP'[0];
echo [1][0, 1, 2]; // not valid code, but should not be picked up here

$x = [
    'a' => false];

$x = [
    'xxxx'   => ['aaaaaaaaaa' => 'ccccccccccc',
                 'bbbbbbbb'   => false],
];

$foo = ['foo' => ['bar1'  => 1
                ,'bar2'   => 1
                ,'bar3'   => 1
                ,'bar4'   => 1
                ,'bar5'   => 1
                ]
        ];

$foo = [
        '1' => $row['status'] === 'rejected'
            ? self::REJECTED_CODE
            : self::VERIFIED_CODE,
        '2' => in_array($row['status'], ['notverified', 'unverified'], true)
            ? self::STATUS_PENDING
            : self::STATUS_VERIFIED,
        '3' => strtotime($row['date']),
       ];


$foo = foo(
    [
    // comment
    ]
);

$foo = [
        <<<HERE
HERE
,
        <<<HERE
HERE
      ,
       ];

[
 lorem(
     1
 ), 2,
];

[
 1 => lorem(
     1
 ), 2 => 2,
];

$foo = [
        'тип'  => 'авто',
        'цвет' => 'синий',
       ];

$paths = [
          Init::ROOT_DIR.'/тип'  => 'авто',
          Init::ROOT_DIR.'/цвет' => 'синий',
         ];

$foo = [<<<JSON
{
}
JSON
       ];

$array = [
          'a'   => fn() => return 1,
          'bb'  => fn() => return 2,
          'ccc' => ( true ) ?
              fn() => return 1 :
              fn() => return 2,
         ];

$array = [
          1 => '1',
          2 => fn ($x) => yield 'a' => $x,
          3 => '3',
         ];

$foo = [
        $this->fn => 'value',
        $foo->fn => 'value',
       ];

[$a, $b,
$c];

['a' => $a, 'b' => $b,
'c' => $c];

[
 static function() {
     return null;
 },
 (array) [],
 (bool) [],
 (double) [],
 (int) [],
 (object) [],
 (string) [],
 (unset) [],
];

[
 'foo',
 'bar'
 // This is a non-fixable error.
 ,
];

yield [
    static fn () : string => '',
];

yield [
       static fn () : string => '',
      ];

$foo = [
        'foo' => match ($anything) {
            'foo' => 'bar',
            default => null,
        },
       ];

// Intentional syntax error.
$a = [
      'a' =>
     ];

// Safeguard correct errors for key/no key when PHP 7.4+ array unpacking is encountered.
$x = [
    ...$a,
      'foo' => 'bar',
     ];

$x = [
      'foo' => 'bar',
    ...$a,
     ];

$x = [
      'foo' => 'bar',
    ...$a,
      'baz' => 'bar',
     ];

$x = [
    ...$a,
    'foo' => 'bar', // OK.
    'bar', // NoKeySpecified Error (based on second entry).
     ];

$x = [
    ...$a,
    'bar', // OK.
    'foo' => 'bar', // KeySpecified Error (based on second entry).
     ];

$x = [
    'foo' => 'bar',
    ...$a,
    'baz' => 'bar',
    'bar', // NoKeySpecified Error (based on first entry).
     ];

$x = [
    'bar',
    ...$a,
    'bar',
    'baz' => 'bar', // KeySpecified (based on first entry).
     ];

 $x =
 [
  'a',
  'b',
   ];

$x = [
      1, static fn (float $item): float => match ($item) {
        2.0 => 3.0,
        default => $item
    },
     ];

$x = [
      1, static::helloWorld(), $class instanceof static,
      2,
     ];

$noSpaceBeforeDoubleArrow = [
                             'width'=> '',
                             'height' => '',
                            ];

$newlineAfterDoubleArrow = [
                            'width'  =>
                            '',
                            'height' => '',
                           ];

// Sniff should ignore short lists when inside a foreach.
// https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/527
foreach ($data as [, , $value]) {}
foreach ($array as $k => [$v1, , $v3]) {}
foreach ([$a ,$b] as $c) {} // Not a short list. Sniff should handle it.
