Почему я не могу сослаться на этот индекс массива, который, кажется, существует? - PullRequest
1 голос
/ 09 июля 2010

Я получаю строку возврата с торгового счета, которая выглядит следующим образом:

RecurringID=8675309&RefNo=41:39&Notes=

так что я разбираю его в массив так:

$results = array();
$temp = explode('&', $temp);
foreach($temp as $line)
{
    $line = explode('=', $line);
    $results[trim($line[0])] = trim($line[1]);
}

Результирующий print_r ($ results); производит это:

Array ( [RecurringID] => 8675309 [RefNo] => 41:39 [Notes] => ) 

И все же, когда я пытаюсь это сделать:

$blah = $results['RecurringID'];

Я получаю:

Notice (8) : Undefined index:  RecurringID

Ответы [ 2 ]

0 голосов
/ 09 июля 2010

Aha!Моя проблема заключалась в выводе его в браузер, я не мог увидеть полное возвращаемое значение.Оказывается, если посмотреть на значения ascii, то обнаружим:

\r\n\t\t<html><body>RecurringID=1488819&RefNo=186:192&Notes=</body></html>

Что явно сбивало с толку parse_str и мой ручной метод синтаксического анализа.

0 голосов
/ 09 июля 2010

Я не могу воспроизвести эту ошибку.Используете ли вы его до определения индекса RecurringID?

Знаете ли вы о parse_str()

<code>$temp = 'RecurringID=8675309&RefNo=41:39&Notes=';
parse_str($temp, $results);

print "<pre>";
print_r($results);
print "
";

$results содержит следующее:

Array
(
    [RecurringID] => 8675309
    [RefNo] => 41:39
    [Notes] => 
)

Это прекрасно работает:

print $results['RecurringID']; //8675309

Я не могу повторить ваше предупреждение, даже если добавлю:

error_reporting(E_ALL);

... превыше всего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...