Строка массива в csv в php

У меня есть массив со строкой array("firstname" => "Mary", "lastname" => "Johnson", "age" => '0025'), я хочу экспортировать в CSV-файл, но у меня нет 0, как это 25, когда я экспортирую в CSV-файл.

я попробовал этот код, и я получил результат без 0

$data = array(
    array("firstname" => "Mary", "lastname" => "Johnson", "age" => '0025')
  );

  $colnames = array(
    'firstname' => "Fname",
    'lastname' => "Last name",
    'age' => "Age",
  );

  function map_colnames($input)
  {
    global $colnames;
    return isset($colnames[$input]) ? $colnames[$input] : $input;
  }

  function cleanData(&$str)
  {
    if ($str == 't') $str = 'TRUE';
    if ($str == 'f') $str = 'FALSE';
    if (preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) {
      $str = "$str";
    }
    if (strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
  }

  // filename for download
  $filename = "website_data_" . date('Ymd') . ".csv";

  header("Content-Disposition: attachment; filename=\"$filename\"");
  header("Content-Type: text/csv");

  $out = fopen("php://output", 'rw');

  $flag = false;
  foreach($data as $row) {
    if (!$flag) {
      // display field/column names as first row
      $firstline = array_map(__NAMESPACE__ . '\map_colnames', array_keys($row));
      fputcsv($out, $firstline, ',', '"');
      $flag = true;
    }
    array_walk($row, __NAMESPACE__ . '\cleanData');
    fputcsv($out, array_values($row), ',', '"');
  }

  fclose($out);
  exit;

я получил этот результат

Fname   Lastname   Age
MAry    Johnson    25

Любое решение для этого?

@ B001ᛦ просто пример, хе-хе

Rajes 14.02.2019 09:27

Какова цель $str = "$str"? Это ничего не меняет.

Barmar 14.02.2019 09:36

@Barmar да это ничего не меняет

Rajes 14.02.2019 09:37

@Barmar, но когда я устанавливаю $str = " '$str ", я могу получить '0025, но я не хочу'

Rajes 14.02.2019 09:39

Он удаляет левые заполненные 0, потому что fputscsv считает «0025» числом 25. См. здесь для обсуждения stackoverflow.com/questions/2489553/…

chiliNUT 14.02.2019 09:40

Я не могу воспроизвести эту проблему. Я получаю Mary,Johnson,0025

Barmar 14.02.2019 09:41

Как вы оцениваете результаты? Почему у вас пробелы между полями вместо запятых?

Barmar 14.02.2019 09:42

@Rajes Тебе вообще не нужна эта строка. fputcsv() добавит кавычки вокруг полей, которые в них нуждаются.

Barmar 14.02.2019 09:43

Вы загружаете файл в приложение для работы с электронными таблицами? Вероятно, он удаляет нули, потому что видит его как число.

Barmar 14.02.2019 09:43

@Barmar, ты можешь написать ответ?

Rajes 14.02.2019 09:44

Что бы сказал ответ? Насколько я понимаю, проблем с ремонтом нет.

Barmar 14.02.2019 09:45

@Barmar да, я открываю его с помощью таблицы Excel

Rajes 14.02.2019 09:45

Спросите в Суперпользователь, есть ли способ запретить Excel делать это.

Barmar 14.02.2019 09:45

@Barmar, это означает, что код создает 0025, чтобы преуспеть и разделить этот 0?

Rajes 14.02.2019 09:47

Да, это то, что я говорю. Возможно, этот вопрос вам поможет.

Barmar 14.02.2019 09:48

Разве вы не могли этого увидеть, посмотрев файл в текстовом редакторе?

Barmar 14.02.2019 09:48

Я только что запустил этот код в phpfiddle.org, и он отлично работает, получая Fname, "Last name", Age Mary, Johnson, 0025. Я думаю, проблема в программе, которую вы используете для открытия csv, откройте файл в текстовом редакторе :)

calm 14.02.2019 09:55

@Barmar хорошо, я понял, большое спасибо

Rajes 14.02.2019 09:59

@спокойно я понял большое спасибо

Rajes 14.02.2019 10:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
19
257
0

Другие вопросы по теме