Как создать массив глобалов - PullRequest
0 голосов
/ 12 марта 2011

Как создать массив в GLOBALS для php?

например, я хочу сделать что-то вроде этого:

$GLOBALS["chapter_names"] = array();

, а затем

$GLOBALS["chapter_names"][$i] = $row -> CHAPTER_NAME;

внутри цикла while

, где $i - индекс массива

это оптимальный способ сделать что-то?

спасибо!

Ответы [ 4 ]

6 голосов
/ 12 марта 2011
$GLOBALS["chapter_names"] = array();
foreach ($rows as &$row) {
    array_push($GLOBALS["chapter_names"], $row->CHAPTER_NAME);
}
1 голос
/ 12 марта 2011

Почти так же, как вы дали это там. За исключением того, что вам не нужно ставить индекс $ i при добавлении нового материала, если только для этого не нужен какой-то конкретный индекс. Вы можете просто сделать это примерно так:

$GLOBALS['chapter_names'] = array();
$GLOBALS['chapter_names'][] = $row -> CHAPTER_NAME;


print_r($GLOBALS);
0 голосов
/ 12 марта 2011

Не используйте $ GLOBALS, это устаревшая и довольно опасная практика. Вы можете прочитать о шаблоне реестра - это решение проблемы с ОО. Что касается вашего примера, он должен работать полностью.

0 голосов
/ 12 марта 2011

Это должно работать.

$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"

Однако, как вы, вероятно, знаете, переменные должны иметь только столькообъем по мере необходимости, чтобы предотвратить столкновения и возможные проблемы.Поэтому в большинстве сценариев следует избегать глобальных переменных.

...