Пример #1
0
 /**
  * Export array data to CSV format.
  *
  * @param  array        $ary
  * @param  string|array $omit
  * @param  string       $delim
  * @param  string       $esc
  * @param  string       $dt
  * @return void
  */
 public function export($ary, $omit = null, $delim = ',', $esc = '"', $dt = null)
 {
     $output = '';
     $headerAry = array();
     if (is_null($omit)) {
         $omit = array();
     } else {
         if (!is_array($omit)) {
             $omit = array($omit);
         }
     }
     // Initialize and clean the header fields.
     foreach ($ary[0] as $key => $value) {
         if (!in_array($key, $omit)) {
             $k = new Moc10_String((string) $key);
             if ($k->pos($esc) !== false) {
                 $k->replace($esc, $esc . $esc);
             }
             if ($k->pos($delim) !== false) {
                 $k = new Moc10_String($esc . $k . $esc);
             }
             $headerAry[] = (string) $k;
         }
     }
     // Set header output.
     $output .= implode($delim, $headerAry) . "\n";
     // Initialize and clean the field values.
     foreach ($ary as $value) {
         $rowAry = array();
         foreach ($value as $key => $val) {
             if (!in_array($key, $omit)) {
                 if (!is_null($dt)) {
                     if (strtotime($val) !== false || stripos($key, 'date') !== false) {
                         $v = date($dt, strtotime($val)) != '12/31/1969' ? new Moc10_String(date($dt, strtotime((string) $val))) : new Moc10_String('');
                     } else {
                         $v = new Moc10_String((string) $val);
                     }
                 } else {
                     $v = new Moc10_String((string) $val);
                 }
                 if ($v->pos($esc) !== false) {
                     $v->replace($esc, $esc . $esc);
                 }
                 if ($v->pos($delim) !== false) {
                     $v = new Moc10_String($esc . (string) $v . $esc);
                 }
                 $rowAry[] = $v;
             }
         }
         // Set field output.
         $output .= implode($delim, $rowAry) . "\n";
     }
     $this->write($output);
     return $this;
 }