2010-09-02 4 views
1

У меня есть функция PHP, которая возвращает массив. Это выход print_r($myArray):Не удается получить доступ член массива - ОБНОВЛЕНО

Array ( 
[id] => 8166 
[customer_id] => 73 
[nickname] => AnnieB 
[name] => Anastasia Beaverhausen 
[email] => [email protected] 
[phone] => 555-555-5555 
[company] => Annie B's 
[address1] => 123 Main Street 
[address2] => Apartment 555 
[city] => Chicago 
[state] => IL 
[zip] => 55555 
[billing] => 1 
[residence] => 0 
[token] => 
[verified] => 1) 

я должен иметь возможность получить доступ к любому из членов, сказав что-то вроде $myArray['city'], правильно? Я знаю, что я делал это в прошлом, но он продолжает возвращать пустую строку, даже если в поле города есть значение.

Любые идеи? ================== MORE КОД РАЗМЕЩЕННЫЕ НА ПРОСЬБЫ ========================== === Я использую это в Joomla, поэтому есть несколько строк, которые относятся к Joomla. Конечной целью этого кода является заполнение выпадающего списка адресами из базы данных; значения опций содержат вложенную строку всех значений столбца (для доступа через javascript позже), а текст опции - это одно поле. Вот код, который создает выпадающее меню:

foreach (getAddresses($AcctID) as $id => $info) { 
       print_r($info); 
       $nickName = $info[2]; 
       error_log("nickname=".$nickName); 
       $infoStr = implode("|", $info); 
       $addressOptions .= "<option value=\"{$infoStr}\">$nickName</option>"; 
    } 

Функция getAddresses находится здесь (это работает правильно):

function getAddresses($AcctID) { 
    $db =& JFactory::getDBO(); 
    $query = "select * from jos_customers_addresses where customer_id = ".$db->quote($AcctID); 
    $db->setQuery($query); 
    if (!$db->query()) error_log($db->stderr()); 

    if (!$db->getNumRows()) 
     return false; 
    else 
     return $db->loadAssocList(); 
} 

print_r ($ информация) линии является то, что возвращает массив, который я первоначально отправил , Следующие две строки не те, давая мне проблемы:

$nickName = $info[2]; 
error_log("nickname=".$nickName); 

Я также попытался $ NickName = $ Информации [ «ник»] и получили тот же результат - никакого значения, даже несмотря на то, очевидно, значение в print_r, и значение действительно получается правильно в коде, сгенерированном линией implode. Если вы можете найти где-нибудь между этими двумя линиями, где я перезаписью своим переменным, или любым другим, пожалуйста, направьте его ко мне, потому что я невежественный, почему я не могу получить ручку на этой величине.

+0

используйте кнопку кода для форматирования вывода 'print_r'. Кроме того, включите строку, в которой вы извлекаете значение массива. – aularon

+4

Пожалуйста, покажите нам больше кода. –

+2

Моя ставка заключалась бы в том, что вы переписываете массив где-то в своем коде. –

ответ

0

я должен иметь возможность получить доступ к любому из членов, говоря что-то вроде $ туАггау [ «город»], правильно?

Да, это правильно.

Я знаю, что я сделал это в прошлом, но он продолжает возвращаться в пустую строку, даже если имеется значение в городе поле.

Если ничего не появилось, там, вероятно, нет значения, которое, как говорится в комментариях, скорее всего является ошибкой в ​​вашем коде (что-то переписывает этот ключ). Для того, чтобы убедиться, что нет ничего там, вместо того, чтобы echo $myArray['city'] попробовать var_dump($myArray['city']) - это скажет вам, если это пустая строка (string(0) "") или не установлен на всех (NULL)

Возьмите print_r($myArray) и поместить его непосредственно перед оператором, где вам использование $myArray['city']. является ли «городской» ключ еще установленным? Если это так, дважды проверьте, чтобы убедиться, что у вас нет опечатки ... вопросы капитализации! Если это не еще установить, переместить print_r($myArray) вверх несколько строк и повторить до тех пор, пока не найдете то, что сначала убрать $myArray['city']

...Или просто разместить больше кода ;-)

EDIT: ли $info[2] должны быть $info['city']?

+0

Yup, вы правы - в моем коде была опечатка ... Думаю, мои глаза нуждались в нескольких часах, чтобы найти ее. – EmmyS

+0

@EmmyS: Это случается со мной много. Я нахожу помощь на растяжках! – Josh

Смежные вопросы