Ejemplo n.º 1
0
Archivo: Csv.php Proyecto: draber/jig
 /**
  * {@inheritdoc} 
  * 
  * Source format: CSV
  * 
  * <code>
  * $options = [
  *  'delimiter' => ',',    // typically ,|;|\t
  *  'enclosure' => '"',    // typically "|'
  *  'escape'    => '\\',   // how the above is to be escaped
  *  'pivot'     => false   // pivot input array
  *  ];
  * </code>
  * 
  * @param mixed $resource
  * @param array $options
  */
 public function fromArray($resource, array $options = [])
 {
     $options = array_merge(['delimiter' => ',', 'enclosure' => '"', 'escape' => '\\', 'pivot' => false], $options);
     $resource = parent::getRealResource($resource, $options);
     if ($options['pivot']) {
         $resource = ArrayUtils::pivot($resource);
     }
     $dataDepth = self::verifyDataDepthLimit($resource, 2);
     if ($dataDepth === 1) {
         $resource = [$resource];
     } else {
         if ($dataDepth > 2) {
             $msg = '$resource must have one or two levels';
             if ($options['pivot']) {
                 $msg .= ' after it has been pivoted';
             }
             throw new JigException($msg);
         }
     }
     $csv = '';
     foreach ($resource as $valueArr) {
         $line = '';
         foreach ($valueArr as $value) {
             $line .= StringUtils::quote($value, $options) . $options['delimiter'];
         }
         $csv .= rtrim($line, $options['delimiter']) . PHP_EOL;
     }
     return $csv;
 }
Ejemplo n.º 2
0
Archivo: Pivot.php Proyecto: draber/jig
 /**
  * Pivot an array
  * 
  * @param array $resource
  * @return array
  */
 public function fromArray(array $resource)
 {
     return ArrayUtils::pivot($resource);
 }