【问题标题】:counting data in a multidemensional array计算多维数组中的数据
【发布时间】:2018-10-09 14:21:32
【问题描述】:

我用 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 数组的截图,这是正确的

这里有警告的语句算什么(当然 1 是减去)。也许还有另一种可能。

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

【问题讨论】:

  • 我认为 getPost() 已经返回了一个数组,试试吧。 stackoverflow.com/questions/3745865/…
  • 我不是 zend 人,但count($this->getRequest()->getFiles()->toArray()) 会给你一个文件数吗?
  • @Jules R. 不,这是不对的,我在这个数组中得到了我想要的一切,但我数不清。 array_summ XX 计数也正确,但会发出警告
  • @Nigel Ren 如果我选择 3 个文件,结果为 1
  • @pia-sophie 你试过没有吗?

标签: php zend-framework zend-form zend-framework3


【解决方案1】:

从添加的$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

【讨论】:

  • $test=count($data['PAD_Document_Path']);作品给出了 3 的数量,这对于我的测试场景来说是可以的 $countpads =$this->getRequest()->getFiles()->count();不起作用,给出1的数量
  • 好的,感谢您试一试。已将其从答案中删除。
猜你喜欢
  • 1970-01-01
  • 2016-02-13
  • 1970-01-01
  • 2011-07-08
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
相关资源
最近更新 更多