我有一个返回数组的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中有一个明显的值,并且该值确实在由内爆线。如果你能找到我正在覆盖我的变量的那两行之间的某个地方,或者其他什么,请指出给我,因为我无法理解为什么我无法处理这个值。
答案 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']
吗?