code: public function toString(array $config, $header = null)
      {
          $ini = !empty($header) ? $header . PHP_EOL : '';
  
          uasort($config, function ($first, $second) {
              if (is_array($first)) {
                  return 1;
              }
  
              if (is_array($second))
              {
                  return -1;
              }
  
              return 0;
          });
  
          $names = array_keys($config);
  
          foreach ($names as $name)
          {
              $section = $config[$name];
  
              if (!is_array($section))
              {
                  $ini .= $name . ' = ' . $this->encodeValue($section) . PHP_EOL;
                  continue;
              }
  
              if (empty($section))
              {
                  continue;
              }
  
              if (!empty($ini))
              {
                  $ini .= PHP_EOL;
              }
  
              $ini .= "[$name]" . PHP_EOL;
  
              foreach ($section as $option => $value)
              {
                  if (is_numeric($option))
                  {
                      $option = $name;
                      $value  = (array)$value;
                  }
  
                  if (is_array($value))
                  {
                      foreach ($value as $key => $currentValue)
                      {
                          $ini .= $option . '[' . $key . '] = ' . $this->encodeValue($currentValue) . PHP_EOL;
                      }
                  }
                  else
                  {
                      $ini .= $option . ' = ' . $this->encodeValue($value) . PHP_EOL;
                  }
              }
  
              $ini .= "\n";
          }
  
          return $ini;
      }
docs: @param array $config
  @param string|null  $header
  
  @return string