Заполнение пустого массива значениями переменных в цикле

Тема в разделе "PHP", создана пользователем Ammy, 7 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Ammy

    Ammy Создатель

    Регистр.:
    29 авг 2009
    Сообщения:
    10
    Симпатии:
    0
    Здравствуйте!

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

    PHP:
    for ($i 0$i count($matches[0]); $i++) { 
       
    $url 'server'.$i
       if (isset($
    $url)) { 
          
    $array = array(); 
          
    array_unshift($array,$$url); 
          return(
    $ar); 
       } 
    Возвращает только одно значение в массиве..

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

    PHP:
    return @array($server1$server2$server3)
    Естественно оно выдавало ошибки, указывая на отсутствие некоторых элементов (а их ведь может быть и больше, и меньше), поэтому решила воспользоваться другим методом, который указала выше.
    ---



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


    РЕШЕНИЕ:

    PHP:
    $array = array(); 
    for (
    $i 0$i count($matches[0]); $i++) {  
       
    $url 'server'.$i;  
       if (isset($
    $url)) {   
          
    array_unshift($array,$$url);  
       }  

    return(
    $array); 
    Вопрос снят! Проблема решена благодаря MONtrade'у и всеми, кто оперативно предоставил свои варианты решения проблемы!
    СПАСИБО ВАМ!
     
  2. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    311
    быть может поставить return($ar); после цикла? вот так:
    PHP:
    $array = array();
    for (
    $i 0$i count($matches[0]); $i++) { 
       
    $url 'server'.$i
       if (isset($
    $url)) {  
          
    array_unshift($array,$$url); 
       } 
    }
    return(
    $ar);
    или точно известно, что при каждой обработке цикла будет найдена только одна переменная?
     
    Ammy нравится это.
  3. Ammy

    Ammy Создатель

    Регистр.:
    29 авг 2009
    Сообщения:
    10
    Симпатии:
    0
    Их может быть сколько угодно.

    До цикла они генерируются, и им присваиваются значения.

    Пример сгенерированных: $server1 = 127.0.0.1; $server2 = 127.0.0.2, $server3 = ...., $server50.... $server60

    Теперь в другом (текущем) цикле нужно проверить их существование, и занести значения в массив. :)
     
  4. Tier_WerWolf

    Tier_WerWolf Создатель

    Регистр.:
    9 июн 2009
    Сообщения:
    16
    Симпатии:
    2
    return($ar); - вот это тебе зачем?
    Попробуй вот так
    --
    $array = array();
    for ($i = 0; $i < count($matches[0]); $i++) {
    $url = 'server'.$i;
    if (isset($$url)) array_unshift($array,$$url);
    }
     
    Ammy нравится это.
  5. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
    Ответ уже дали верный. Только не

    PHP:
    return($ar);  
    а
    PHP:
    return($array);  

    Ammy
    Генерировать переменные до цикла таким способом - мегадыра в безопасности. Надо там, где генерируются переменные прямо и генерировать сразу массив таких переменных, а не вылавливать их потом по именам.
     
    Ammy нравится это.
  6. Ammy

    Ammy Создатель

    Регистр.:
    29 авг 2009
    Сообщения:
    10
    Симпатии:
    0
    Ответ действительно был дан MONtrade'ом, за что ему огромное спасибо. Не подумала заранее, что некоторые функции нужно было вынести за пределы цикла. Удивительно... Счётчик вынесла, а про остальное забыла..

    Я привела лишь быстрый пример кода, потому что сам код является очень большим. И, как вы заметили, переменные действительно геренируются внутри одного цикла (foreach). Просто мне было удобнее привести здесь немного иной, более простой пример, чтобы особо не грузить людей своими проблемами. Спасибо вам, спасибо всем остальным за помощь! :) Очень оперативно!
     
Статус темы:
Закрыта.