首頁 後端開發 php教程 PHP将两个关联数组合并函数提高函数效率_php技巧

PHP将两个关联数组合并函数提高函数效率_php技巧

May 17, 2016 am 08:47 AM
關聯數組

在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了吧?
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
php中關聯數組和索引數組區別是什麼 php中關聯數組和索引數組區別是什麼 Jul 13, 2023 pm 03:11 PM

php中關聯數組和索引數組區別有:1、索引數組使用數字索引,而關聯數組使用字串鍵來標識和存取元素;2、索引數組中的元素順序與被添加到數組中的順序相同,而關聯數組中的元素順序不重;3、索引數組可以透過從0開始的數字索引存取數組元素,而關聯數組可以使用字串鍵來存取數組元素;4、索引數組的元素鍵是從數字0開始的數字索引,關聯數組的元素鍵是字串。

php關聯數組怎麼求和 php關聯數組怎麼求和 Jul 14, 2023 am 11:41 AM

php關聯數組求和的方法:1、使用foreach循環;2、使用array_sum()函數;3、使用array_reduce()函數。

深入探討PHP數組:多維數組、關聯數組等全面解析 深入探討PHP數組:多維數組、關聯數組等全面解析 Mar 13, 2024 pm 02:36 PM

深入探討PHP數組:多維數組、關聯數組等全面解析PHP中數組是一種非常重要的資料結構,它可以儲存多個資料項並透過索引進行存取。在PHP中,陣列可分為索引數組、關聯數組和多維數組等不同類型,每種類型都有其獨特的用途和特點。本文將深入探討PHP數組的各種類型,包括如何聲明、存取、遍歷和操作數組,同時將提供具體的程式碼範例以幫助讀者更好地理解。一、索引​​數組索引數

使用PHP函數 'mysqli_fetch_assoc' 從結果集中取得一行作為關聯數組 使用PHP函數 'mysqli_fetch_assoc' 從結果集中取得一行作為關聯數組 Jul 24, 2023 pm 08:12 PM

使用PHP函數"mysqli_fetch_assoc"從結果集中取得一行作為關聯陣列在PHP中,與資料庫互動是一項常見的任務。當我們執行SELECT查詢並取得結果集時,我們通常需要將結果集中的資料儲存到PHP陣列中以便進一步處理。 PHP提供了多個函數來處理結果集,其中一個常用的函數是"mysqli_fetch_assoc"。這個函數從結果集中取得一行

php關聯數組是什麼意思 php關聯數組是什麼意思 Aug 03, 2023 pm 05:46 PM

php關聯數組是一種特殊類型的數組,其中每個元素都是由一個鍵和一個相應的值組成的,與普通數組不同的是,關聯數組的索引不是按照數字順序排列的,而是使用字符串或整數等鍵來標識和存取值。關聯數組在php中廣泛應用於各種程式設計任務,包括資料儲存、表單處理、資料庫查詢等。

如何使用PHP中的array_diff_assoc函數來比較關聯數組的差異 如何使用PHP中的array_diff_assoc函數來比較關聯數組的差異 Jun 26, 2023 am 11:44 AM

隨著技術的不斷發展,Web開發變得越來越流行,PHP作為其中一種廣泛使用的Web開發語言,在處理資料的過程中,很多時候需要比較兩個陣列之間的差異,這時我們可以使用PHP中的array_diff_assoc函數來實作。 array_diff_assoc函數用於比較兩個關聯數組之間的差異,根據鍵值對的不同返回一個新的數組,它會傳回一個數組,其中包含在所有參數數組中都

PHP arsort()函數使用指南:關聯數組降序排列 PHP arsort()函數使用指南:關聯數組降序排列 Jun 27, 2023 am 09:28 AM

在PHP程式設計中,陣列是一種非常常見的資料類型。 PHP提供了許多內建的函數來處理數組,其中arsort()函數是一個非常有用的函數,可以用來對關聯數組進行降序排列。本文將對arsort()函數進行詳細介紹並舉出一些實用的範例。一、什麼是arsort()函數? arsort()函數是一個PHP內建的陣列排序函數,用於依關聯數組的值對陣列進行降序排序。該函數不會改變

PHP關聯數組的使用方法和範例 PHP關聯數組的使用方法和範例 Jul 15, 2023 pm 09:37 PM

PHP關聯數組的使用方法和範例在PHP中,數組是一種非常常用的資料類型,它用於儲存多個值,並且可以透過索引或鍵進行存取。在許多情況下,使用關聯數組比使用索引數組更為方便,因為關聯數組可以使用自訂的鍵來存取和操作數組中的值。關聯數組是一種將鍵和值相關聯的陣列類型。每個鍵值對在數組中都有唯一的鍵,透過鍵可以存取和修改對應的值。以下是一些使用關聯數組的基本方法和示

See all articles