溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP如何將兩個關(guān)聯(lián)數(shù)組合并函數(shù)提高函數(shù)效率

發(fā)布時間:2021-07-27 15:58:07 來源:億速云 閱讀:145 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要講解了“PHP如何將兩個關(guān)聯(lián)數(shù)組合并函數(shù)提高函數(shù)效率”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“PHP如何將兩個關(guān)聯(lián)數(shù)組合并函數(shù)提高函數(shù)效率”吧!

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

使用下面的字節(jié)寫的函數(shù)可以解決

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

復(fù)制代碼 代碼如下:


$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'
)
);


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

復(fù)制代碼 代碼如下:


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;
}


改進(jìn)后的辦法,使用數(shù)組下標(biāo),使用兩次循環(huán):形成類似于left join的方式

復(fù)制代碼 代碼如下:


$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();

//使用數(shù)組下標(biāo)的辦法
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;


打印出來結(jié)果如下:

復(fù)制代碼 代碼如下:


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
)
)

感謝各位的閱讀,以上就是“PHP如何將兩個關(guān)聯(lián)數(shù)組合并函數(shù)提高函數(shù)效率”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對PHP如何將兩個關(guān)聯(lián)數(shù)組合并函數(shù)提高函數(shù)效率這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI