Предупреждение PHP: недопустимый тип смещения - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь запустить этот массив и продолжаю получать этот недопустимый тип смещения.Я, честно говоря, даже не уверен, правильно ли я настраиваю свой массив, любая помощь будет полезна!

$device_changes = array
(
    [0] => array
        (
            ['device'] => "Connect",
            ['added'] => 0,
            ['removed'] => 0,
            ['net_change'] => 0,
            ['percent_added'] => 0,
            ['percent_removed'] => 0,
        ),
    [1] => array
        (
            ['device'] => "Camera",
            ['added'] => 0,
            ['removed'] => 0,
            ['net_change'] => 0,
            ['percent_added'] => 0,
            ['percent_removed'] => 0,
        ),
    [2] => array
        (
            ['device'] => "BATlte",
            ['added'] => 0,
            ['removed'] => 0,
            ['net_change'] => 0,
            ['percent_added'] => 0,
            ['percent_removed'] => 0,
        ),
    [3] => array
        (
            ['device'] => "BATwifi";
            ['added'] => 0,
            ['removed'] => 0,
            ['net_change'] => 0,
            ['percent_added'] => 0,
            ['percent_removed'] => 0,
        ),
);

Ответы [ 3 ]

0 голосов
/ 27 октября 2018

Вы смешали вывод printf с определением массива. Если вы хотите определить массив, вы не можете использовать [0] или ['device'] в качестве ключа массива, так как это массив с одним элементом. Вместо этого вы должны использовать 0 или 'device' в приведенном выше примере.

Кроме того, вы можете полностью пропустить ключ, если это просто число с автоматическим приращением.

$device_changes = [
    [
        'device' => "Connect",
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    [
        'device' => "Camera",
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    [
        'device' => "BATlte",
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    [
        'device' => "BATwifi";
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
];
0 голосов
/ 27 октября 2018

Вы можете использовать этот конвертер "штуковин", который я только что написал

https://github.com/ArtisticPhoenix/MISC/tree/master/Lexers/OutputConverter

Но вам придется "отменить" все, что вы сделали, если вы сделали это с помощью print_r. А именно

  • заглавное слово Array (или оно не обнаружит его print_r)
  • удалить пометки ', ", , и ;

Так это выглядит так:

Array
(
    [0] => Array
        (
            [device] => Connect
            [added] => 0
            [removed] => 0
            [net_change] => 0
            [percent_added] => 0
            [percent_removed] => 0
        )
    [1] => Array
        (
            [device] => Camera
            [added] => 0
            [removed] => 0
            [net_change] => 0
            [percent_added] => 0
            [percent_removed] => 0
        )
    [2] => Array
        (
            [device] => BATlte
            [added] => 0
            [removed] => 0
            [net_change] => 0
            [percent_added] => 0
            [percent_removed] => 0
        )
    [3] => Array
        (
            [device] => BATwifi
            [added] => 0
            [removed] => 0
            [net_change] => 0
            [percent_added] => 0
            [percent_removed] => 0
        )
)

Тогда это даст вам это:

array (
    0 => 
    array (
        'device' => 'Connect',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0
    ),
    1 => 
    array (
        'device' => 'Camera',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0
    ),
    2 => 
    array (
        'device' => 'BATlte',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0
    ),
    3 => 
    array (
        'device' => 'BATwifi',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0
    )
)

Он также работает на var_dump и может определять разницу между var_export, var_dump и print_r. Он может обрабатывать объекты, вложения и т. Д. Он даже делает отступы в точности как var_export ...: -D

Я работал над этим несколько дней, потому что мне надоело возиться с созданными массивами (не в var_export), которые люди любят размещать здесь.

Его довольно легко использовать, он имеет веб-интерфейс с одной кнопкой и текстовое поле для вставки и копирования, даже простое.

Извините, исходный код слишком длинный, чтобы включать его в пост, и он немного сложнее, чем мне нравится, но я пытался завершить работу над своим веб-сайтом (делая перерыв после настройки на нем синтаксического анализатора SCSS), так что ... ... очень плохо.

Рано или поздно я добавлю его туда, но это сайт на WordPress, поэтому мне, вероятно, придется написать короткий код для него и всего этого джаза.

Наслаждайтесь

0 голосов
/ 27 октября 2018

Ключам не нужны квадратные скобки вокруг них.

Таким образом, вы должны иметь:

$device_changes = array
    (
        0 => array
            (
                'device' => "Connect",
                'added' => 0,
                'removed' => 0,
                'net_change' => 0,
                'percent_added' => 0,
                'percent_removed' => 0,
            ),
        1 => array
            (
                'device' => "Camera",
                'added' => 0,
                'removed' => 0,
                'net_change' => 0,
                'percent_added' => 0,
                'percent_removed' => 0,
            ),
        2 => array
            (
                'device' => "BATlte",
                'added' => 0,
                'removed' => 0,
                'net_change' => 0,
                'percent_added' => 0,
                'percent_removed' => 0,
            ),
        3 => array
            (
                'device' => "BATwifi",
                'added' => 0,
                'removed' => 0,
                'net_change' => 0,
                'percent_added' => 0,
                'percent_removed' => 0,
            ),
    );

Примечание после BATwifi должно быть, в конце строки, а неа;тоже:)

Редактировать:

Возможно, вас спутали квадратные скобки, так как массивы можно установить с помощью array() или [].Например:

$device_changes = [
    0 => [
        'device' => 'Connect',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    1 => [
        'device' => 'Camera',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    2 => [
        'device' => 'BATlte',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    3 => [
        'device' => 'BATwifi',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
];

Вы даже можете избавиться от цифровых клавиш, так как по умолчанию они устанавливают то, что вы использовали, начинаются с 0 и увеличиваются на единицу:

$device_changes = [
    [
        'device' => 'Connect',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    [
        'device' => 'Camera',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    [
        'device' => 'BATlte',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
    [
        'device' => 'BATwifi',
        'added' => 0,
        'removed' => 0,
        'net_change' => 0,
        'percent_added' => 0,
        'percent_removed' => 0,
    ],
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...