code: private static function readBIFF8ConstantArray($arrayData)
      {
          // offset: 0; size: 1; number of columns decreased by 1
          $nc = ord($arrayData[0]);
  
          // offset: 1; size: 2; number of rows decreased by 1
          $nr = self::getUInt2d($arrayData, 1);
          $size = 3; // initialize
          $arrayData = substr($arrayData, 3);
  
          // offset: 3; size: var; list of ($nc + 1) * ($nr + 1) constant values
          $matrixChunks = [];
          for ($r = 1; $r <= $nr + 1; ++$r) {
              $items = [];
              for ($c = 1; $c <= $nc + 1; ++$c) {
                  $constant = self::readBIFF8Constant($arrayData);
                  $items[] = $constant['value'];
                  $arrayData = substr($arrayData, $constant['size']);
                  $size += $constant['size'];
              }
              $matrixChunks[] = implode(',', $items); // looks like e.g. '1,"hello"'
          }
          $matrix = '{' . implode(';', $matrixChunks) . '}';
  
          return [
              'value' => $matrix,
              'size' => $size,
          ];
      }
docs: read BIFF8 constant value array from array data
  returns e.g. ['value' => '{1,2;3,4}', 'size' => 40]
  section 2.5.8.
  
  @param string $arrayData
  
  @return array