6

これは単なる奇妙な質問です。その背後にある理由は、純粋に私のほうが少し怠けているためです。ここに私が意味するものがあります..

htaccess が適切な URL を作成し、そのデータを現在の「ページ」として $_GET['p'] 配列キーに送信する Web サイトがあるとします。インデックス ファイルでページをセットアップします。最初に行うことは、構成ファイル $_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

このような配列内の他の値を反映する配列値を持つことができるとは思いません。ただし、最初に頭に浮かぶのは、フォールスルー値をエイリアスとして使用して$_PAGE、ステートメント内から配列を作成することです。switch

// 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 に答える