我正在使用foreach构造来查看从函数返回的数组。不幸的是,如果只有1个结果而不是大于1个结果,则此函数将返回不同的结构。当有一个结果时,我得到以下结果:
array(3) {
["name"]=>
string(5) "chris"
["admin"]=>
string(5) "chris"
["time"]=>
string(19) "2014/06/27 12:36:31"
}
string(34) "$1$9243ujf0i2j8ehdf24hdf9a8"
我正在尝试获取[“ name”]值。如果我使用以下代码,则变量具有正确的数据,但出现非法字符串偏移错误:
foreach($res[1]['result']['user']['entry'] as $user) {
$s = $user['name'];
echo $s;
}
如何正确获取array [“ name”]值?还是我必须在更高层次上做一些不同的事情?当只有一个条目时,我得到的原始数据如下:
array(2) {
["@attributes"]=>
array(2) {
["status"]=>
string(7) "success"
["code"]=>
string(2) "19"
}
["result"]=>
array(2) {
["@attributes"]=>
array(2) {
["total-count"]=>
string(1) "1"
["count"]=>
string(1) "1"
}
["user"]=>
array(2) {
["@attributes"]=>
array(2) {
["admin"]=>
string(5) "chris"
["time"]=>
string(19) "2014/06/27 12:39:58"
}
["entry"]=>
array(2) {
["@attributes"]=>
array(3) {
["name"]=>
string(5) "chris"
["admin"]=>
string(5) "chris"
["time"]=>
string(19) "2014/06/27 12:36:31"
}
["phash"]=>
string(34) "$1$9243ujf0i2j8ehdf24hdf9a8"
}
}
}
}
如果有多个条目,则显示以下内容:
array(2) {
["@attributes"]=>
array(2) {
["status"]=>
string(7) "success"
["code"]=>
string(2) "19"
}
["result"]=>
array(2) {
["@attributes"]=>
array(2) {
["total-count"]=>
string(1) "1"
["count"]=>
string(1) "1"
}
["user"]=>
array(2) {
["@attributes"]=>
array(2) {
["admin"]=>
string(5) "chris"
["time"]=>
string(19) "2014/06/27 12:57:32"
}
["entry"]=>
array(2) {
[0]=>
array(2) {
["@attributes"]=>
array(3) {
["name"]=>
string(5) "chris"
["admin"]=>
string(5) "chris"
["time"]=>
string(19) "2014/06/27 12:36:31"
}
["phash"]=>
string(34) "$1$9243ujf0i2j8ehdf24hdf9a8"
}
[1]=>
array(2) {
["@attributes"]=>
array(3) {
["name"]=>
string(4) "test"
["admin"]=>
string(5) "chris"
["time"]=>
string(19) "2014/06/27 12:57:32"
}
["phash"]=>
string(34) "$1$as9d8jf238r9jf89j9238jr"
}
}
}
}
}
请注意[“ entry”]之后的额外索引数组级别。基本上,我只想要[“ name”]值的列表。
首先,将根据结果数量返回不同结构的服务被破坏。如果无法修复,则可以使用以下方法尝试对数据进行规范化处理:
if (!isset($res[1]['result']['user']['entry'][1]) {
// Not an array, so change the structure to an array with one element:
$res[1]['result']['user']['entry'] = array($res[1]['result']['user']['entry']);
}
// Now process the data as if the service is always returning an array
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句