Ссылается ли на array_expression foreach в каждом цикле?

  • Автор темы 72shaman
  • 44
  • Обновлено
  • 17, May 2024
  • #1
Учитывая следующий код:
 $ten_element_array = array(

'one' => '1',

'two' => '2',

'three' => '3',

'four' => '4',

'five' => '5',

'six' => '6',

'seven' => '7',

'eight' => '8',

'nine' => '9',

'ten' => '10'

);

function some_func()

{

foreach ($GLOBALS['ten_element_array'] as $key => &$value)

{

if ($key == 'seven')

{

// do something

}

else

{

// do some other thing

}

}

return implode(', ', $GLOBALS['ten_element_array']);

}

echo some_func();
PHP: Ссылается ли на $ten_element_array 10 раз в foreach?

72shaman


Рег
20 Feb, 2014

Тем
1

Постов
2

Баллов
12
  • 19, May 2024
  • #2
Любой набор данных, содержащий 1000 строк, лучше всего хранить в базе данных, и к нему можно обращаться по мере необходимости.

Несколько человек могут получать доступ к информации и обновлять ее, поэтому новый запрос из базы данных будет разумным, а вызовы базы данных будут быстрыми и простыми.
 

function some_func($arr) {

$output = [];

foreach ($arr as $key => $value) {

if ($key == 'seven') {

// do something

}

else {

// do some other thing

}

$output[$key] = $value;

}

return implode(', ', $output);

}

$list = get_values_from_database('xyz');

$str = some_func($list);

PHP:
 

levinius


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
  • 03, Jun 2024
  • #3
Глобальная переменная требуется в редких случаях — иногда вам нужна константа или может существовать переменная конфигурации с именованными ключами, на которые можно напрямую ссылаться.

Из вашего примера создается впечатление, что глобальное значение обновляется в foreach, и это меня крайне не устраивает.

Я также не уверен насчет вашего значения & $ - я думал, что это обозначение исчезло около десяти лет назад.

или оно появилось снова? Можете ли вы дать мне практический пример использования глобального массива с тысячами строк?
 

blackcat3


Рег
08 May, 2015

Тем
0

Постов
2

Баллов
2
  • 11, Jun 2024
  • #4
1) Если бы вы сделали это сами, вы бы вряд ли забыли об этом в будущем. Обучение на практике закрепляет его глубже в вашем мозгу. 2) Я не знаю, что вы подразумеваете под «тестированием скорости», но тест не должен был занимать больше нескольких минут.
 

SEVI1


Рег
21 Apr, 2011

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966

Интересно