PHP遍历数组赋值后仅返回最后一个元素是什么原因?
问题原因
你的代码运行后仅能拿到最后一个演员元素,核心是循环赋值逻辑错误导致的:
- 循环过程中你始终在对
$actor['name']这同一个固定键进行赋值操作,每一轮新的赋值都会直接覆盖上一轮存入的值,等循环执行到最后一次时,这个键自然只会保留最后一个演员Actor4的值 - 你没有将每一轮循环生成的演员数据追加到结果集合中,始终在修改同一个数组变量的内容,自然无法保存所有演员信息
修复方案
根据你的使用场景,可以选择两种常见写法:
场景1:仅需要保存所有演员的姓名,生成一维索引数组
$actors = explode(",",$this->input->post('movie_actors', true)); $actorList = []; foreach ($actors as $value) { // 用[]语法将当前演员名追加到数组末尾,不会覆盖已有内容 $actorList[] = $value; }
场景2:需要为每个演员保留键名结构,方便后续扩展其他字段,生成二维数组
$actors = explode(",",$this->input->post('movie_actors', true)); $actorList = []; foreach ($actors as $value) { $actorList[] = [ 'name' => $value ]; }
内容的提问来源于stack exchange,提问作者Andrei
相关产品推荐
相关产品推荐

