Запишите значения csv без foreach

У меня есть такой массив:

$array = [
    'data' => [
        0 => 2678
        1 => 2378
    ],
    'active' => [
        0 => 866
        1 => 111
    ]
    ..........
]

Я хочу вставить такой CSV

data active 2678 866 2378 111

Я пробовал вот так:

fputcsv($fp,array_keys($array));
fputcsv($fp,array_values($array));

Но что-то не работает. У меня в csv показан только заголовок, я имею в виду только данные data active без данных. Пожалуйста, помоги мне

Что не так с циклом foreach

RiggsFolly 16.08.2018 16:56

Как этого добиться с помощью foreach ()? Я не имею в виду, как написать только один раз ключевое имя массива

klsdskldsd 16.08.2018 17:00

это не сработало из-за вашей версии PHP. 5.3 не поддерживает []. Где вы должны были получить сообщение об ошибке. Обновлено: этот комментарий в соответствии с двумя версиями версий php stackoverflow.com/posts/51879952/revisions

Funk Forty Niner 16.08.2018 17:01

@FunkFortyNiner извините

klsdskldsd 16.08.2018 17:02

здесь слишком много правок для любой версии php.

Funk Forty Niner 16.08.2018 17:03

Бит ......... меня сейчас беспокоит. Сколько других массивов в этом массиве

RiggsFolly 16.08.2018 17:03

Много.............

klsdskldsd 16.08.2018 17:04
Стоит ли изучать 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
7
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

array_values ничего не делает, кроме как возвращает ваш существующий массив без каких-либо ключей, поэтому вы все равно передаете 2D-массив в fputcsv, с чем он не может работать.

По сути, вы хотите выполнить операцию с каждой «строкой» в вашем массиве. Это абсолютно то, для чего нужен цикл foreach, поэтому я не уверен, почему вы пытаетесь избежать этого. Если у вас нет особой причины избегать их (и я не могу представить, что это может быть), вам следует использовать эту структуру.

Чтобы ваш код заработал, все, что вам нужно сделать, это обернуть цикл вокруг вашего второго вызова fputcsv:

foreach ($array as $row) {
  fputcsv($fp, $row);
}

Редактировать: Извините, я не заметил, что в вопросе был транспонирован массив. Если вы хотите поработать с этим, вам нужно добавить строку:

$array = array_map(null, ...array_values($array));

перед отображением данных.

См. Полный пример в https://3v4l.org/AoRcQ.

Если я увижу пример: $ array = ['data' => [0 => 2678, 1 => 2378,], 'active' => [0 => 866, 1 => 111,],]; Правильный возврат должен быть: data,active 2678,866 2378,111

klsdskldsd 16.08.2018 17:26

@ Джордж, теперь я понимаю. Я обновил ответ и пример.

iainn 16.08.2018 17:32

Добавьте эту строку: $array = array_map(null, array_values($array)); перед foreach?

klsdskldsd 16.08.2018 17:36

В моем ответе вам не хватает ..., но да. См. Связанный пример, в нем есть все, что вам нужно.

iainn 16.08.2018 17:36

@iainn, array_map (null, ... значения_массива ($ array)); когда у нас будет три точки ... array_values ​​($ array)

Krishna Jonnalagadda 16.08.2018 17:36

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