我试图将数组添加到关联数组中。
$contents = glob(DIR_IMAGE."catalog/Data_PDF/*");
$contents_pregged['name'] = preg_replace("(".DIR_IMAGE.")", "", $contents);
$contents_pregged['link'] = preg_replace("(catalog/Data_PDF/)", "", $contents_pregged['name']);
$data['contents'][] = array(
'name' => $contents_pregged['name'],
'link' => $contents_pregged['link']
);
上面的例子是在控制器内部,如果我单独发送数据,它会回显列出的所有文件,但我想在关联数组中使用数组,所以我可以使用下面的示例回显名称和链接。
{% for content in contents %}
<li><a href = "/image/{{content.link}}">{{content.name}}</a></li>
{% endfor %}
我在前端的响应是Array
目前我在目录中有3个文件,因此数组应返回3个值
答案 0 :(得分:1)
glob()
返回一个数组。
如果您首先迭代从glob()
获得的文件,将会更容易。而且你并不需要正则表达式来提取文件名部分:
foreach($contents as $file) {
$data['contents'][] = [
"name" => str_replace(DIR_IMAGE, "", $file),
"link" => basename($file)
];
}
答案 1 :(得分:0)
这是因为$contents_pregged['name']
和$contents_pregged['link']
都是数组,因为$contents
也是数组。
因此,您需要以某种方式迭代$contents_pregged
,以便在$data['contents']
中您将获得所需的数据。一个简单的解决方案可以是:
foreach ($contents_pregged['name'] as $k => $v) {
$data['contents'][] = array(
'name' => $v,
// here we get value of `$contents_pregged['link']` with same key
'link' => $contents_pregged['link'][$k],
);
}
之后,您可以根据需要在模板中迭代$contents
。