PHPのGLOBALSで配列を作成するにはどうすればよいですか?
たとえば、次のようなことをしたい:
$GLOBALS["chapter_names"] = array();
その後
$GLOBALS["chapter_names"][$i] = $row -> CHAPTER_NAME;
while ループ内
$i
配列のインデックスはどこですか
これは物事を行うための最適な方法ですか?
ありがとう!
$GLOBALS["chapter_names"] = array();
foreach ($rows as &$row) {
array_push($GLOBALS["chapter_names"], $row->CHAPTER_NAME);
}
あなたがそこに与えたのとほぼ同じです。ただし、特定のインデックスが必要な場合を除いて、新しいものを追加するときに$iのインデックスを付ける必要はありません。あなたはそれを次のようにすることができます:
$GLOBALS['chapter_names'] = array();
$GLOBALS['chapter_names'][] = $row -> CHAPTER_NAME;
print_r($GLOBALS);
それはうまくいくはずです。
$GLOBALS["chapter_names"] = array();
$row = new StdClass;
$row->CHAPTER_NAME = 'test';
$i = 0;
$GLOBALS["chapter_names"][$i] = $row -> CHAPTER_NAME;
var_dump($GLOBALS);
とりわけ、値が表示されます...
["chapter_names"]=>
array(1) {
[0]=>
string(4) "test"
ただし、おそらくご存知のように、変数は、衝突や起こりうる問題を防ぐために、必要なだけのスコープを持つ必要があります。したがって、ほとんどのシナリオではグローバル変数を避ける必要があります。
$GLOBALS は使用しないでください。これは時代遅れで非常に危険な慣行です。レジストリ パターンについて読むことができます。これは問題に対する OO ソリューションです。あなたの例に関しては、それは完全に機能するはずです。