Не могу установить переменную вне php foreach statment

0

Я пытаюсь получить $leadsource для печати или эха вне инструкции foreach, но он не работает.

Если я эхо $leadsource внутри инструкции foreach, например, так: www.test.com?id=2462 он работает, но если я пытаюсь эхо $ sourceource за пределами инструкции foreach, то это то, что мне нужно, оно возвращает неправильное значение в массиве. Это сводит меня с ума, любая помощь, которую кто-либо может мне дать, я буду признателен.

$sourcetracking=$_GET['id'];

$LegacyIDLookupArray = array(
    '2612' => 'ADV-ShowProg',
    '2462' => 'ADV-ShowProg-3.5x7',
    '2422' => 'ADV-Mag-book'
    );


if (!empty($sourcetracking))
{
    foreach ($LegacyIDLookupArray as $LegacyID => $Oldleadsource)
    {
        if ($sourcetracking == $LegacyID)
        { 
            $leadsource = &$Oldleadsource;
            // echo "$leadsource\n"; Echoing $leadsource here works properly.             
        }        
    }
}
else
{
    echo "fail";
}

echo "$leadsource\n"; // echoing $leadsource here echo the wrong one in the array.
  • 0
    это входит в массив и для каждого оператора следующим образом: www.test.com?id=2462. Идентификатор равен $ sourcetracking. Затем он ищет его в массиве, находит соответствующий номер и возвращает ассоциированное значение.
  • 0
    Почему & Inn перед $ Oldleadsource? Вы действительно хотите создать ссылку вместо простого копирования текущего значения?
Показать ещё 4 комментария
Теги:
arrays
foreach
variables

2 ответа

2
Лучший ответ

Попробуйте вставить паузу.

// As a side note: you can check at the very beginning to see that
// the ID isn't being compromised by something by checking if 
// is_numeric. Also, you can save your 'fail' message until the very
// end when checking that your $leadsource isset. These extra points
// are not essential, but they will throw a fail at all points of the 
// code (if that is valuable at all to you)

$sourcetracking = (isset($_GET['id']) && is_numeric($_GET['id']))? $_GET['id']:false;

if($sourcetracking !== false) {
    $LegacyIDLookupArray = array(
        '2612' => 'ADV-ShowProg',
        '2462' => 'ADV-ShowProg-3.5x7',
        '2422' => 'ADV-Mag-book'
        );

         foreach ($LegacyIDLookupArray as $LegacyID => $Oldleadsource) { 
              if($sourcetracking == $LegacyID) { 
                   $leadsource = &$Oldleadsource;

                   // This is where the break goes to stop your loop
                   // when condition is met
                   break;            
               }
          }
    }

// Your $leadsource OR fail is echoed here.
echo (isset($leadsource))? $leadsource : "fail";
  • 0
    Это будет работать, работая над симптомом, реальная проблема заключается в & ...
  • 1
    Да, я не был уверен, что передача по ссылке была важна или нет, поэтому я выбрал решение, которое включает в себя как можно больше оригинала
Показать ещё 2 комментария
0
original code:
$sourcetracking=$_GET['id'];

$LegacyIDLookupArray = array(
    '2612' => 'ADV-ShowProg',
    '2462' => 'ADV-ShowProg-3.5x7',
    '2422' => 'ADV-Mag-book'
    );


if (!empty($sourcetracking)) {  
            foreach ($LegacyIDLookupArray as $LegacyID => $leadsource) { 
                    if($sourcetracking == $LegacyID) { 
                        $leadsource = $_POST['LeadSource'];
                        break;            
                    }
                }
}else {
    echo"fail";
}

// You may want to do a check to make sure it is set or you will
// get a variable not found error. Even if you think it should be
// set 100% of the time, you just never know. May as well put the 
// isset in.
if(isset($leadsource)) {
   echo $leadsource;
    }
  • 0
    После того, как Id / $ sourcetracking проходит через массив и находит подходящие переменные, мне нужно, если ($ sourcetracking == $ LegacyID) {} установить $ приводит к тому, что переменная будет найдена в массиве, чтобы я мог продолжить с остальной логикой формы
  • 0
    Вы видели, работает ли перерыв? Не должно быть проблем с передачей ссылки, если перерыв работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню