【发布时间】:2015-12-27 20:23:01
【问题描述】:
有没有一种简单的方法可以从一维数组构建链接列表?
例如:
$array = [
'slug-1' => 'Title 1',
'slug-2' => 'Title 2',
'slug-3' => 'Title 3'
]
回显为:
<a href="slug-1">Title 1</a>, <a href="slug-2">Title 2</a>, <a href="slug-3">Title 3</a>
基本上是一个修改后的内爆函数,可以添加额外的参数,如class="something" 和类似的。
我怀疑有,所以这就是我想要做的。
创建全局函数:
- 创建
app/Http/helpers.php - 编辑
composer.json,在autoload块中添加"files": ["app/Http/helpers.php"] - 运行
composer dump-autoload
如here所述。
不知道如何从这里开始。我尝试将以下代码添加到helpers.php:
<?php
/**
* Given the array of type ['slug' => 'title', ...]
* create new array of type [ '0' => '<a href="slug">title</a>', ...]
* if $attributes given (also array) as ['id'=>'newLink', 'class'=>'newClass']
* add them to first array to get <a href='slug' id='newLink' class='newClass'>title</a>
*
*
* @param $array, $attributes
* @return array
*/
public function linkifyArray($array, $attributes){
$arrayOfLinks = $array;
return $arrayOfLinks;
}
这没有任何作用,但我试图解释我在 cmets 中要做什么。
我相信我可以自己创建这个函数,但是当我将上面的代码复制到 helpers.php 文件时,我收到内部服务器错误,PHPStorm 告诉我他是 expecting statement。
所以我在这里遗漏了一些非常基本的东西,并且在我可以继续创建我的辅助函数之前需要一些帮助(非常欢迎链接)。
请告诉我我是否以错误的方式处理这个问题。
最后,我希望能够在我的应用中的任何地方执行以下操作:
implode(', ', $array->linkifyArray())
在此问题的开头获取来自$array 的链接列表。
编辑:
我写了函数:
public function linkifyArray($array, $attributes) {
$htmlAttributes = '';
//inline attributes before appending them to <a></a>
if (is_array($attributes))
{
foreach ($attributes as $k => $v)
{
$htmlAttributes.= $k.'="'.$v.'" ';
}
}
$arrayOfLinks = [];
//create array of links
if(is_array($array))
{
foreach ($array as $kk => $vv)
{
$arrayOfLinks[]='<a '.$htmlAttributes.' href="'.$kk.'">'.$vv.'</a>';
}
}
return $arrayOfLinks;
}
并尝试在<?php 下方添加namespace App\Http;,但我仍然收到内部服务器错误。
【问题讨论】:
标签: php arrays oop laravel-5.1 global