0

数年前、最初に PHP を学習していたときに、配列が 1 ではなく 0 から始まることを知らなかったコードを偶然見つけました。

$afc_east[1] = "Buffalo Bills";
$afc_east[2] = "Miami Dolphins";
$afc_east[3] = "New England Patriots";
$afc_east[4] = "New York Jets";

$afc_west[1] = "Denver Broncos";
$afc_west[2] = "Kansas City Chiefs";
$afc_west[3] = "Oakland Raiders";
$afc_west[4] = "San Diego Chargers";

//.... other divisions...

//Put all of the arrays into one
$afc = array($afc_east, $afc_west, $afc_north, $afc_south);

for($i=0;$i<count($afc);$i++)
{   
    $count = count($afc[$i]);   

    for($y=1;$y<=$count;$y++)
    {
        // I'd like to find out how to echo "afc_east" or "afc_west"
        $name_of_array = ""; //Idk
        echo "$".$name_of_array."[".$y-1."]" = ".$afc[$i][$y].";<br />";
    }

}

すべての配列を 0 から開始したいのですが、配列が多すぎて、戻って配列内の数値を現在の数値よりも 1 つ下に変更することができません。PHP で配列名とそれに対応する値をエコーアウトし、それらをコピーしてテキスト エディターに貼り付ける方がはるかに簡単です。

4

4 に答える 4

2

すべての要素が正しい順序で宣言されている場合は、ハードコーディングされたキーを削除して、PHP に列挙させることができます。

$afc_east[1] = "Buffalo Bills";
$afc_east[2] = "Miami Dolphins";
$afc_east[3] = "New England Patriots";
$afc_east[4] = "New York Jets";

なる

$afc_east = array(); // Optional
$afc_east[] = "Buffalo Bills";
$afc_east[] = "Miami Dolphins";
$afc_east[] = "New England Patriots";
$afc_east[] = "New York Jets";

(\$[a-z_]+\[)\d+(\] =)エディタで正規表現を使用して置換できるようにする必要があります\1\2

于 2013-07-12T04:34:26.293 に答える
0

PHP はこの機能を提供していません。次の点を考慮してください。

$foo = array("a", "b", "c");
$bar = $foo;

配列の名前fooですかbar? 両方?ない?ここでの本当の答えは、配列は独自のオブジェクトであり、格納されている場所を追跡しないということです。他の場所に保存すると、保存されている他の変数に関するすべての情報が失われます。

…はぁ。テキスト エディターでこれを行うためのより良い方法があると確信していますが、コードを微調整して期待どおりに動作させることだけが目的である場合は、次の方法を使用できます... おい、信じられないこれを言うつもりです…変数変数

以下は、私が本当に好きではない非常に大雑把な PHP 機能ですが、この非常に特殊な状況で役立つ可能性があります。

$username = "Matchu";
$var_name = "username";
echo $$var_name; // echoes "Matchu"

配列を配列に格納してそれらを反復処理する代わりに、代わりに変数名を反復処理できます。

$afc = array("afc_east", "afc_west", "afc_north", "afc_south");
foreach($afc as $name_of_array) {
    $array_value = $$name_of_array;
    // Ta da, you have the variable name and the array stored in it. Go crazy.
}

日常のコードでこの機能を使用しないことを強くお勧めしますが、非常に特定の理由で実際に変数名を操作したいという非常に特殊なケースでは、便利な場合があります

于 2013-07-12T04:37:21.917 に答える