计算多维数组中的数据

counting data in a multidemensional array

我用 Zend 上传了几个文件,想计算 $data 数组以获取文件名。

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

我在另一个 post

中找到了这个计数代码
array_sum(array_map("count", $data))-1;

它给出了正确数量的碎片,我可以得到名字,但它也给出了警告:

Warning: count(): Parameter must be an array or an object that implements Countable

我尝试给出其他维度,例如:

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

但正如预期的那样,它不起作用。

感谢任何帮助!唯一的问题是如何获取给定文件名的数量。

***编辑关于我的答案 post $data 数组的截图,这是正确的

这里warning的语句算什么(当然1是减)。或许还有其他的可能可以算。

所以一切都很好,但我想摆脱警告。

从添加的 $data 数组的屏幕截图来看,你不应该在下面这样做吗?

count($data['PAD_Document_Path'])

像这样循环获取特定的文件名

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

参见pathinfo。从该文档页面:

Example #1 pathinfo() Example

<?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
?>

The above example will output:

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