无法访问阵列成员 - 已更新

时间:2010-09-02 22:12:06

标签: php arrays

我有一个返回数组的PHP函数。这是print_r($myArray)

的输出
Array ( 
[id] => 8166 
[customer_id] => 73 
[nickname] => AnnieB 
[name] => Anastasia Beaverhausen 
[email] => annieb@annieb.com 
[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']之类的内容来访问任何成员,对吗?我知道我过去已经这样做了,但它仍然会返回一个空字符串,即使城市字段中有值。

有什么想法吗? ==================每个请求发布更多代码=========================== == 我在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($ info)行是返回我最初发布的数组的内容。接下来的两行是给我带来问题的:

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

我还尝试过$ nickName = $ info ['nickname']并得到相同的结果 - 没有值,即使print_r中有一个明显的值,并且该值确实在由内爆线。如果你能找到我正在覆盖我的变量的那两行之间的某个地方,或者其他什么,请指出给我,因为我无法理解为什么我无法处理这个值。

1 个答案:

答案 0 :(得分:0)

  

我应该可以访问任何一个   成员说的像   $ myArray ['city'],对吗?

是的,这是正确的。

  

我知道我过去已经这样做了,但是   它不断返回一个空字符串,   即使城市有价值   字段。

如果没有显示任何内容,那么可能没有值,正如评论所说,很可能是代码中的错误(覆盖该密钥的东西)。确保没有任何内容,而不是echo $myArray['city']尝试var_dump($myArray['city']) - 这将告诉您它是否为空字符串(string(0) "")或根本不设置(NULL

带上您的print_r($myArray)并将其放在您使用$myArray['city']的语句之前。是“城市”的关键仍然设定?如果是这样,请仔细检查以确保您没有错字...大写是重要的!如果仍未设置 ,请将print_r($myArray)向上移动几行并重复,直到找到未设置的内容$myArray['city']

...或者只是发布更多代码;-)

编辑$info[2]需要$info['city']吗?