PHP中foreach处理列表数据哪一种更好?
开发中经常需要对从数据库中取出的列表数据进行处理,
看到的写法有下面三种,都可以得到相同的结果,个人一直习惯使用第一种。
从可读性和性能方面考虑哪一种更好?
列表数据如:
<code>$list = [ [ 'uid'=>100, 'username'=>'test100', 'nickname'=>'php_1', 'gender'=>1, ], [ 'uid'=>200, 'username'=>'test200', 'nickname'=>'php_2', 'gender'=>2, ], [ 'uid'=>300, 'username'=>'test300', 'nickname'=>'php_3', 'gender'=>0, ], ];</code>
写法1,原数组中修改:
<code>foreach($list as $k=>$v){ if($v['gender']==0){ $list[$k]['gender']='妖人'; }else{ $list[$k]['gender']='人'; } }</code>
写法2,原数组修改,使用引用:
<code>foreach($list as &$v){ if($v['gender']==0){ $v['gender']='妖人'; }else{ $v['gender']='人'; } }</code>
写法3,定义一个新的数组:
<code> $data = []; foreach($list as $k=>$v){ if($v['gender']==0){ $v['gender']='妖人'; }else{ $v['gender']='人'; } $data[] = $v; }</code>
回复内容:
开发中经常需要对从数据库中取出的列表数据进行处理,
看到的写法有下面三种,都可以得到相同的结果,个人一直习惯使用第一种。
从可读性和性能方面考虑哪一种更好?
列表数据如:
<code>$list = [ [ 'uid'=>100, 'username'=>'test100', 'nickname'=>'php_1', 'gender'=>1, ], [ 'uid'=>200, 'username'=>'test200', 'nickname'=>'php_2', 'gender'=>2, ], [ 'uid'=>300, 'username'=>'test300', 'nickname'=>'php_3', 'gender'=>0, ], ];</code>
写法1,原数组中修改:
<code>foreach($list as $k=>$v){ if($v['gender']==0){ $list[$k]['gender']='妖人'; }else{ $list[$k]['gender']='人'; } }</code>
写法2,原数组修改,使用引用:
<code>foreach($list as &$v){ if($v['gender']==0){ $v['gender']='妖人'; }else{ $v['gender']='人'; } }</code>
写法3,定义一个新的数组:
<code> $data = []; foreach($list as $k=>$v){ if($v['gender']==0){ $v['gender']='妖人'; }else{ $v['gender']='人'; } $data[] = $v; }</code>
使用1比较多
虽然2的写法最简洁,但是foreach下引用是有坑的
你在foreach外如果再次使用$v这个变量,可能就把foreach最后一个值给变了,当然能保证不用的话是不会发生这种问题的
array_map
个人一般用写法一
写法二容易出问题
推荐引用的方式,即写法2
第二种要好一点吧,你都foreach出来了,本来就有个一维数组存在,干嘛还要再去list里面取呢。
select if(gender=0,'妖人','人') as gendername ……
习惯用第一种方式

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發
