I had a problem with Revolution Slider on a WordPress installation when upgrading to PHP 7.2+. It would generate the error – PHP Fatal error: [] operator not supported for strings in C:[path]\wp-content\plugins\revslider\includes\framework\base-admin.class.php:71
The problem was from the plugin attempting to use the short array push syntax on a string:
$box = array();
$box['title'] = $title;
$box['location'] = $location;
$box['content'] = $content;
$box['draw_function'] = $customDrawFunction;
self::$arrMetaBoxes[] = $box;
The solution was to modify the last line as such:
self::$arrMetaBoxes = $box;
No explosions, so all is well!
Why was the operator not supported?
A discussion on Stack Overflow gave me a nudge in the right direction. The suggestion was that PHP 7 has problems with empty-index array push syntax.
These are ok and work properly in PHP 7+.
$undeclared_variable_name[] = 'value'; // creates an array and adds one entry
$emptyArray = []; // creates an array
$emptyArray[] = 'value'; // pushes in an entry
An attempt to use empty index push on any variable declared as a string, number, object, etc, doesn’t works however. ie
$declaredAsString = '';
$declaredAsString[] = 'value';
$declaredAsNumber = 1;
$declaredAsNumber[] = 'value';
$declaredAsObject = new stdclass();
$declaredAsObject[] = 'value';
Theses examples all fail with a PHP error, which in my case was “[] operator not supported for strings”
For more PHP related posts, check here
Muchas gracias, me salvaste el pellejo!!
Saludos
Saludos!