尽管存在索引,但未定义的索引仍然存在
Posted
技术标签:
【中文标题】尽管存在索引,但未定义的索引仍然存在【英文标题】:Undefined Index persists although index exists 【发布时间】:2017-04-17 04:03:43 【问题描述】:所以基本上我想创建一个有点像这样的列表数组
Array("Region")
['id'] => 1
['city'] => Array()
所以我通过这种方式从数据库中获取区域:
$regions = Region::get()->keyById()->toArray();
$cities = City::get()->toArray();
然后
foreach($city as $city)
$regions[city['region_id']]['cities'][] = city;
这行得通,当我在$region[index]
上使用var_dump
时,它按预期显示id
和city
[0]=>
['id'] => 1
other_contents
['city'] => Array()
$region['city']
上的var_dump
也会返回其相应的内容数组。
Array("Region")
['id'] => 1
['region_id'] => 1
other_contents
但是,当我var_dump-ed $region['id']
时,它会返回一个Undefined index: id
。
表结构
Region
id
other_content
City
id
region_id
other_content
【问题讨论】:
我真的说不清楚,给你看表结构。$regions[city['region_id']]['cities'][] = city;
- 除非你在任何地方定义了常量city
,否则它不会起作用。如果没有:尝试在变量名前使用$
【参考方案1】:
错误在于这段代码,
$regions[city['region_id']]['cities'][] = city;
$regions是$region的数组,数组索引是0,1,2,不是region_id
你可以改成这个
$regions = Region::get()->keyById()->toArray();
foreach($regions as $region)
$region['cities'] = City::where('region_id', $region->id)->get()->toArray();
但我建议你使用 laravel 一对多的 eloquent。
将此添加到区域模型
public function cities()
return $this->hasMany('City', 'region_id');
将此添加到城市模型
public function region()
return $this->belongsTo('Region', 'region_id');
然后在你的控制器中你可以使用
$region->cities()
获取该地区所有城市。
希望对你有帮助。
【讨论】:
是的,我会考虑的。谢谢你的回答:) 非常感谢,我们决定尝试这种方法,这将是一个很大的帮助,谢谢^^以上是关于尽管存在索引,但未定义的索引仍然存在的主要内容,如果未能解决你的问题,请参考以下文章