Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Заполнение пустого массива значениями переменных в цикле
Форумы портала PHP.SU » PHP » Программирование на PHP » Заполнение пустого массива значениями переменных в цикле

Страниц (1): [1]
 

1. Ammy - 07 Сентября, 2009 - 09:34:29 - перейти к сообщению
Здравствуйте!

Имею цикл, в котором проверяется существование переменной, а затем, по сути (сабжу), нужно добавить её в массив, но не так, чтобы однократно, а с запоминаением, потому что переменная не одна и в цикле будут аналогичным образом обрабатываться и добавляться другие переменные. На выходе необходимо иметь массив, содержащий значения всех переменных, которые подверглись обработке в цикле.

PHP:
скопировать код в буфер обмена
  1. for ($i = 0; $i < count($matches[0]); $i++) {
  2.    $url = 'server'.$i;
  3.    if (isset($$url)) {
  4.       $array = array();
  5.       array_unshift($array,$$url);
  6.       return($ar);
  7.    }
  8. }


Возвращает только одно значение в массиве..

---
До этого пробовала более простым, но не безопасным / плохим способом простого перебора:

PHP:
скопировать код в буфер обмена
  1. return @array($server1, $server2, $server3)


Естественно оно выдавало ошибки, указывая на отсутствие некоторых элементов (а их ведь может быть и больше, и меньше), поэтому решила воспользоваться другим методом, который указала выше.
---



Примечание: данный цикл находится внутри функции, а названия переменных (генерируемые) внутри цикла лишь указывают на их наличие, но сами по себе не несут значений - значения содержат одноимённые переменные расположенные до цикла внутри функции.
(Добавление)
Проблема решена благодаря MONtrade, за что ему огромное спасибо! Вопрос снят. Закатив глазки

Решение:

PHP:
скопировать код в буфер обмена
  1. $array = array();
  2. for ($i = 0; $i < count($matches[0]); $i++) {  
  3.    $url = 'server'.$i;  
  4.    if (isset($$url)) {  
  5.       array_unshift($array,$$url);  
  6.    }  
  7. }
  8. return($array);


Главное - это не забыть вынести некоторые функции из цикла.
2. whyte - 09 Сентября, 2009 - 08:50:04 - перейти к сообщению
Так не подойдет?
PHP:
скопировать код в буфер обмена
  1. $result=array();
  2. for ($i = 0; $i < count($matches[0]); $i++) {
  3.   $url = 'server'.$i;
  4.   if (isset($$url)) {
  5.     $result[$url]=$$url;
  6.   }
  7. }
  8. return $result;

 

Powered by ExBB FM 1.0 RC1