2012-12-12 5 views
5

これは単なる好奇心の質問です。その背後にある理由は、純粋に私のところで少し怠けていることです。ここに私が言っていることがあります..PHP配列キーにエイリアスを付けることはできますか?

私は、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/']; 

配列が作成された後に「エイリアス」への順序のページに、私は最後にこれを追加する必要があり、ページ配列ofthe終わりということに注意してください。

多分、PHPのいずれかの方法があります私はちょっと気付いていない、それは私をちょっとレイジーにして(そして同時にクリーナーコードに加える)、単にキーのエイリアスにすることができるだろうか?次のことはうまくいかないことに気がつく。質問には、エイリアスを作成する方法がありますか?配列の作成中に同じ配列ですか?

この例では、作業をdeosn't:たぶん

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

自体の中から、 "この" 配列を参照する方法はありますか?

これができない場合は、「可能ではない」という回答に問題はありません。あなたがこれを解決するより良い方法を持っていれば、私が上で説明した以外の方法で、怠け者のために、私はそれを読むことに興味があります:)

+0

短い回答、いいえ、それは残念ながら作成中ではありません。後ではい、あなたのように、または参照(変更が反映されている)でも、「ソース」は存在していなければならず、完全にインスタンス化されなければなりません。私は最後に追加されたエイリアスを見ても構いませんが、実際のページとエイリアスを区別するために何かがあります。 – Wrikken

答えて

1

私はあなたが配列の値このような配列内の他の値を反映します。あなたは別名としてフォールスルーの値を使用して、switch声明の中から、あなたの$_PAGEのアレイを構築するためだろうけれども心に来る最初の事:

// 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

+0

私は自分の記事でこのことが本来のやり方であると述べていたはずです。この問題は、この1つのサイトのページの量になります。switch文は、しばらくすると大きくなり、醜いものになります。ページ配列がある場所は、試練の最上部にあるconfigファイルにあります。とにかく、私はあなたの反応に感謝します。配列の中に落ちるタイプの取引をすることができたらいいと思っています;) – NinjaKC

1

をそれが可能だ。

&を使用して、値ではなく(オブジェクト以外の)変数への参照を取得します。

+0

私は実際の配列を参照する必要はありません。特定のページが別のものと同じ設定で始まるように、別名を付ける必要があります。これらのエイリアスのページは、使用される前に設定を変更することがあります。問題は、わずかな変更を除いて同じ600万の配列を作成したくないということです。現在、私は "alias'd"キーをこのような方法で設定し、参照を除いて、私は怠け者になり、配列の初期化に直接 "参照"されたキーを移動すると言うので、すべてをスクロールする必要はありませんhehのたびにページの下部に表示されます。 – NinjaKC

+0

実際の問題がまだ解決していない – m02ph3u5

関連する問題