PHP函数的问题-通过配置文件将链接添加到索引(多个链接)

时间:2019-04-22 17:19:37

标签: php

所以我目前正在做一个小项目,它将有一个配置文件,我可以在其中编辑/添加更多链接等。

所以我想做的是以下几点。 当我在 $link = addLink 中添加新的config.php时,它将自动将链接添加到主页。但是到目前为止,它还没有将链接添加到主页。当我回显$url['link']时,但是如果我做$link['link'],则echo不在第一个链接中。我已经尝试过使用foreachfor和while循环。

我不确定这是否是最好的方法。

这是我的一些代码: config.php

$link      = addLink("https://forums.website.com;Forums"); 
$link      = addLink("https://donate.website.com;Donate"); 

我的功能: function.php

function addLink($link){
    $arrLink         = explode(";", $link);
    $url['link']     = $arrLink[0];
    $url['name']     = $arrLink[1];
    $url['navlink']  = "<li class='nav-item'><a class='nav-link' href='".$url['link'] ."'>".$url['name'] ."<a></li>";
    return $url;
}

欢迎大家提供有关如何执行此操作的建议!如果找到并解决,我还将保持此更新!

3 个答案:

答案 0 :(得分:2)

您正在做的是覆盖 $link变量-您要做的是将push的{​​{1}}变成{{ 1}}

有点像

return

答案 1 :(得分:2)

执行此操作的两种方法,也许还有其他方法。

  1. 使用变量引用保存网址列表,这不是OOP样式。
function addLink($link, &$urls){
    $arrLink         = explode(";", $link);
    $url['link']     = $arrLink[0];
    $url['name']     = $arrLink[1];
    $url['navlink']  = "<li class='nav-item'><a class='nav-link' href='".$url['link'] ."'>".$url['name'] ."<a></li>";
    if (!$urls) {
        $urls = [];
    }
    $urls[] = $url;
    return $url;
}
$urls = [];
$link      = addLink("https://forums.website.com;Forums", $urls); 
$link      = addLink("https://donate.website.com;Donate", $urls); 
  1. 使用OOP样式。
class Nav {
    protected static $urls = [];
    public static function add($link, $name="") {
        $url = [];

        $url['link']     = $link;
        $url['name']     = $name;
        $url['navlink']  = "<li class='nav-item'><a class='nav-link' href='".$url['link'] ."'>".$url['name'] ."<a></li>";
        self::$urls[] = $url;
        return $url;
    }

    public static function getUrls() {
        return self::$urls;
    }
}
Nav::add("https://forums.website.com", "Forums");
Nav::add("https://donate.website.com", "Donate");

$urls = Nav::getUrls();

我认为第二种方法更好。

答案 2 :(得分:1)

我认为您必须尝试以下方法:

function addLink($link){
    $arrLink         = explode(";", $link);
    $url[]['link']     = $arrLink[0];
    $url[]['name']     = $arrLink[1];
    $url[]['navlink']  = "<li class='nav-item'><a class='nav-link' href='".$arrLink[0] ."'>".$arrLink[1] ."<a></li>";
    return $url;
}

您尝试过的代码只会替换现有的元素,这就是为什么您必须在[]之前添加[]的原因。