PHP-在foreach循环中修改当前对象

我想知道是否可以编辑foreach循环中正在处理的当前对象


我正在处理一系列对象$questions,我想遍历数据库中查找与该问题对象相关的答案。因此,对于每一个问题去获取答案对象,并更新当前$question 里面我的foreach循环,这样我可以输出/别处过程。


foreach($questions as $question){

    $question['answers'] = $answers_model->get_answers_by_question_id($question['question_id']);


元芳怎么了
浏览 366回答 3
3回答

芜湖不芜

当然使用array_map(如果使用实现容器的容器ArrayAccess来派生对象)仅仅是一种更聪明的语义方法吗?我所看到的大多数语言和实现中的数组映射语义都相似。它旨在根据输入数组元素返回修改后的数组(高级忽略语言编译/运行时类型首选项);循环意味着执行更多的逻辑。为了通过ID / PK检索对象,具体取决于您是否使用SQL(似乎建议使用),我将使用过滤器来确保获得有效PK的数组,然后使用逗号爆破并放入SQL IN()子句中以返回结果集。它通过SQL进行一次调用而不是多次调用,从而优化了整个call->wait周期。最重要的是,我的代码对于具有某种能力的任何语言的人都可以很好地理解,并且我们不会遇到可变性问题。<?php$arr = [0,1,2,3,4];$arr2 = array_map(function($value) { return is_int($value) ? $value*2 : $value; }, $arr);var_dump($arr);var_dump($arr2);与<?php$arr = [0,1,2,3,4];foreach($arr as $i => $item) {&nbsp; &nbsp; $arr[$i] = is_int($item) ? $item * 2 : $item;}var_dump($arr);如果您知道自己在做什么,就永远不会有变异性问题(如果打算改写,请牢记,您$arr始终$arr = array_map可以做到明确。

慕丝7291255

foreach确实不建议使用in引用foreach,因为循环值部分的传递会导致不可预测的行为。它可能会更长,但是使用此处的方法1会更加安全。
打开App,查看更多内容
随时随地看视频慕课网APP