一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP將兩個關聯數組合并函數提高函數效率

PHP將兩個關聯數組合并函數提高函數效率

2020-06-19 11:48兄弟連php PHP教程

在foreach中循環查詢數據代碼量比較少,但是性能比較低,使用下面的字節寫的函數可以解決

在foreach中循環查詢數據代碼量比較少,但是性能比較低,好點的解決辦法是將id收集起來,用in一次性查詢,但是這引發了數據結構不是我們用PHP自帶的函數可以合并的,今天測試了一下:

使用下面的字節寫的函數可以解決

從數據庫中取出來的數據總是或多或少不符合我們心目中的數據結構,類似于下面的倆個數組,要形成SQL中類似于left join后兩個數組合并:

復制代碼 代碼如下:


$test1 = Array(
0 => Array(
'id' => 9478137,
'create_time' => 1394760724
),
1 => Array(
'id' => 9478138,
'create_time' => 1394760725
),
2 => Array(
'id' => 9478138,
'create_time' => 1394760725
)
);
$test2 = array(
0 => array(
'id' => 9478137,
'message' => 'love you'
),
1 => array(
'id' => 9478138,
'message' => 'miss you'
)
);


如果要將這兩個數組,類似于sql中的left join 關聯起來我們用什么函數呢?額我沒有找見就自己寫了
剛開始的時候,用的是嵌套循環:效率低下

復制代碼 代碼如下:


function _mergerArray($array1, $array2, $field1, $field2 = '') {
$ret = array();
foreach($array1 as $key1 => $value1 ) {
foreach ($array2 as $key2 => $value2) {
if($value1[$field1] == $value2[$field2]) {
$ret[$key1] = array_merge($value1, $value2);
}
}
}
return $ret;
}


改進后的辦法,使用數組下標,使用兩次循環:形成類似于left join的方式

復制代碼 代碼如下:


$test1 = Array(
0 => Array(
'id' => 9478137,
'create_time' => 1394760724
),
1 => Array(
'id' => 9478138,
'create_time' => 1394760725
),
2 => Array(
'id' => 9478138,
'create_time' => 1394760725
)
);
$test2 = array(
0 => array(
'id' => 9478137,
'message' => 'love you'
),
1 => array(
'id' => 9478138,
'message' => 'miss you'
)
);

function _mergerArray($array1, $array2, $field1, $field2 = '') {
$ret = array();

//使用數組下標的辦法
foreach ($array2 as $key => $value) {
$array3[$value[$field1]] = $value;
}
foreach ($array1 as $key => $value) {
$ret[] = array_merge($array3[$value[$field1]], $value);
}
return $ret;
}
$ret = _mergerArray($test1, $test2, 'id', 'id');
print_r($ret);exit;


打印出來結果如下:

復制代碼 代碼如下:


Array
(
[0] => Array
(
[id] => 9478137
[message] => love you
[create_time] => 1394760724
)
[1] => Array
(
[id] => 9478138
[message] => miss you
[create_time] => 1394760725
)
[2] => Array
(
[id] => 9478138
[message] => miss you
[create_time] => 1394760725
)
)


相當于left join了吧?

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色悠久久久久综合欧美99 | 国产免费不卡视频 | 亚洲国产自 | 九9热这里真品 | 日本最大的黄色网站 | 白丝萝莉喷水 | 美女张开大腿让男人桶 | 99re8在线精品视频免费播放 | 亚洲国产精品免费在线观看 | 我年轻漂亮的继坶2中字在线播放 | 好爽视频 | 操美女骚b | 嗯啊在线观看免费影院 | 天美传媒传媒免费观看 | 99热这里只有精品久久免费 | 福利入口在线观看 | 高清视频在线播放 | 久久中文字幕亚洲 | 欧美精品一国产成人性影视 | 天堂在线免费观看 | a毛片在线免费观看 | 欧美日韩亚洲第一区在线 | 午夜一级毛片看看 | 欧美精选欧美极品 | 欧美撒尿屁股嘘嘘撒尿 | 熟睡迷j系列小说 | 护士videossexo另类 | 亚洲天堂v | free chinese 国产精品 | 99久久国产综合精品1尤物 | 久久人妻少妇嫩草AV无码 | 日韩在线1 | 美女被狂干| 日韩拍拍拍 | 男女男在线精品网站免费观看 | 女人张开腿让男人桶爽 | 五月婷婷伊人网 | 国产精品青青青高清在线观看 | 免费的网址 | 美女翘臀跪床被打屁股作文 | 精品国产线拍大陆久久尤物 |