将数组添加到关联数组

时间:2017-08-22 11:27:51

标签: php arrays

我试图将数组添加到关联数组中。

$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个值

2 个答案:

答案 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