【发布时间】:2018-02-07 06:47:24
【问题描述】:
我一直在尝试遍历一个数组。将值插入两个单独的数组 $location 和 $name。但是 $name 数组也打印索引值, $location 工作正常。 这是一个代码示例
$j = 0;
foreach( $entities->results as $key => $value ) {
if( stristr($value->vicinity, $key_stroke) ) {
$location[$j]['place_id'] = $value->place_id;
$location[$j]['vicinity'] = $value->vicinity;
}
if( stristr($value->name, $key_stroke) ) {
$name[$j]['place_id'] = $value->place_id;
$name[$j]['name'] = $value->name;
}
$j++; }
这是json输出
{
"locations": [
{
"place_id": "ChIJRQqyYRFZWjcRmxKd0esyj-k",
"vicinity": "GS Road, Christian Basti, Guwahati"
},
{
"place_id": "ChIJG5IvxhNZWjcRlkMD6lCJ64c",
"vicinity": "GS Road, Ananda Nagar, Christian Basti, Guwahati"
},
{
"place_id": "ChIJxQp72BZZWjcR98oQbFrdTII",
"vicinity": "GS Road, Christian Basti, Guwahati"
},
{
"place_id": "ChIJm5eeJBBZWjcRksI_VY9u1Qo",
"vicinity": "Zoo Road, Sundarpur, Guwahati"
}
],
"names": {
"1": {
"place_id": "ChIJG5IvxhNZWjcRlkMD6lCJ64c",
"name": "Ayush Medico's"
},
"2": {
"place_id": "ChIJxQp72BZZWjcR98oQbFrdTII",
"name": "Premananda Medico's"
},
"3": {
"place_id": "ChIJm5eeJBBZWjcRksI_VY9u1Qo",
"name": "Asaan Medicos"
}
}
}
什么都试过了。可能是什么问题?
【问题讨论】:
-
您的 if 语句
if( stristr($value->name, $key_stroke) )似乎在第一次迭代时返回 false,这使得它省略了 0 索引。当转换为 json 时,这会将“数组”变成一个对象,因为数组在索引中不能有任何间隙。 -
合并结果时,使用array_values(),重置索引就可以了。
-
@LawrenceCherone 它起作用了,伙计..非常感谢....但我不知道它刚刚做了什么。介意解释一下吗??请
-
@MagnusEriksson 解释了它,文档解释了 array_values - 返回数组中的所有值并以数字方式索引数组。
-
@MagnusEriksson 非常感谢...