亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP-在foreach循環中修改當前對象

PHP-在foreach循環中修改當前對象

PHP
元芳怎么了 2019-12-13 14:10:18
我想知道是否可以編輯foreach循環中正在處理的當前對象我正在處理一系列對象$questions,我想遍歷數據庫中查找與該問題對象相關的答案。因此,對于每一個問題去獲取答案對象,并更新當前$question 里面我的foreach循環,這樣我可以輸出/別處過程。foreach($questions as $question){    $question['answers'] = $answers_model->get_answers_by_question_id($question['question_id']);
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

當然使用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) {

    $arr[$i] = is_int($item) ? $item * 2 : $item;

}

var_dump($arr);

如果您知道自己在做什么,就永遠不會有變異性問題(如果打算改寫,請牢記,您$arr始終$arr = array_map可以做到明確。



查看完整回答
反對 回復 2019-12-14
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

foreach確實不建議使用in引用foreach,因為循環值部分的傳遞會導致不可預測的行為。它可能會更長,但是使用此處的方法1會更加安全。



查看完整回答
反對 回復 2019-12-14
  • 3 回答
  • 0 關注
  • 423 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號