6

这只是一个奇怪的问题,其背后的原因纯粹是我稍微懒一点。这就是我的意思..

假设我有一个网站,htaccess 在其中生成了很好的 url,并将该数据作为当前“页面”发送到 $_GET['p'] 数组键。在索引文件中,我设置了页面,我做的第一件事是在配置文件 $_PAGE 数组中设置一些页面设置。现在,假设我有多个页面,我希望有相同的设置,(在页面下方,其他内容可能会略有变化,与设置不对应。所以目前,我有一些类似于以下 2 个 php 文件的内容。

// index.php
include('page.array.php');

echo '<title>'.$_PAGE[$_GET['p']]['title'].'</title>';

// page.array.php
$_PAGE = array(
    'some/page/' => array(
        'title' => 'This is an example'
    )
)
$_PAGE['some/aliased/page/'] = $_PAGE['some/page/'];

请注意,在页面数组的末尾,为了给页面“别名”,我必须在创建数组后将其添加到末尾。

php中是否有任何我可能不知道的方法,这可能会让我变得有点懒惰(同时添加到更简洁的代码中),并让它让我可以简单地为密钥起别名?我注意到以下不起作用,我想我的问题是,有没有办法在创建数组期间在同一个数组中创建别名?

这个例子不起作用:

// page.array.php
$_PAGE = array(
    'some/page/' => array(
        'title' => 'This is an example'
    ),
    'some/aliased/page/' => $_PAGE['some/page/']
)

也许是一种从自身内部引用“这个”数组的方法?

如果这是不可能的,我对“不可能”的答案没有问题。虽然如果你有更好的方法来解决这个问题,除了我上面描述的方法之外,为了更懒惰,我会有兴趣阅读它:)

4

2 回答 2

2

我不相信您可以拥有像这样反映数组中其他值的数组值。不过,首先想到的是让您$_PAGEswitch语句中构造数组,使用贯穿值作为别名:

// Define path for testing, and empty page array
$path = "some/aliased/page";
$page = Array();

// Time to evaluate our path
switch ($path) {
    // If it's either of these two cases
    case "some/page":
    case "some/aliased/page":
        // Assign this array to $page
        $page = Array("Title" => "Two Paths, One Page.");
        break;
    // If it's this case
    case "some/other/path":
        // Assign this array to $page
        $page = Array("Title" => "Something else.");
        break;
    // If the path isn't found, default data
    default:
        $page = Array("Title" => "Page not found");
}

// Output the result
var_dump($page);

执行它:http://sandbox.onlinephpfunctions...ebd3dee1f37c5612c25

于 2012-12-12T00:08:38.970 回答
1

这是可能的:

$_PAGE = array('some/page/' => array('title' => 'This is an example'));
$_PAGE['some/aliased/page/'] = &$_PAGE['some/page/'];
$_PAGE['some/page/'] = 7;
var_dump($_PAGE);

使用 & 获取对(非对象)变量的引用而不是其值。

于 2012-12-12T00:26:42.143 回答