подсчет данных в многомерном массиве - PullRequest
0 голосов
/ 09 октября 2018

Я загружаю несколько файлов с Zend и хочу посчитать массив $ data, чтобы получить имена файлов.

$data = array_merge_recursive(
                    $this->getRequest()->getPost()->toArray(),
                    $this->getRequest()->getFiles()->toArray()
                    );

Я нашел этот код для подсчета в другом посте

array_sum(array_map("count", $data))-1;

Это дает правильное количество фигур, и я могу получить имена, но также выдает предупреждение:

Предупреждение: count (): Параметр должен быть массивом или объектом, реализующим счетное значение

Я пытался указать другие измерения, например:

array_sum(array_map("count", $data['fieldname']))-1;

Но, как и ожидалось, это не работает.

Любая помощь приветствуется!Единственный вопрос заключается в том, как получить количество заданных имен файлов.

*** Отредактируйте относительно ответа. Я выкладываю скриншот, как выглядит массив $ data, который является правильным

enter image description here

А вот что учитывает утверждение с предупреждением (конечно, 1 - вычесть).Возможно, есть другая возможность для подсчета.

enter image description here

Так что все может быть хорошо, но я хочу избавиться от предупреждения.

1 Ответ

0 голосов
/ 10 октября 2018

Судя по добавленному скриншоту массива $data, разве вы не должны делать это ниже?

count($data['PAD_Document_Path'])

Получите конкретные имена файлов, выполнив цикл, например

foreach($data['PAD_Document_Path'] as $key => $value) {
    $name = pathinfo($value)['filename'];
    // do stuff with name
}

См. pathinfo .На этой странице документов:

Пример # 1 pathinfo () Пример

<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>

В приведенном выше примере будет выведено:

/www/htdocs/inc
lib.inc.php
php
lib.inc
...