激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - PHP教程 - PHP使用自定義方法實現數組合并示例

PHP使用自定義方法實現數組合并示例

2021-02-01 16:53HTL PHP教程

這篇文章主要介紹了PHP使用自定義方法實現數組合并示例,涉及php針對數組的遍歷、判斷、轉換等相關操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了PHP使用自定義方法實現數組合并。分享給大家供大家參考,具體如下:

在PHP中提供了強大的數組功能,對于數組的合并也提供了兩個方法:array_merge 和 array_merge_recursive

但對于我們千變萬化的業務來說這些內置的方法并不完全能滿足我們的要求

如我現在就遇到了數組合并這方面的問題,要求是這樣的:

有兩個二維數組,這兩個數組大部分的健名是相同的,但有些健名可能并不存在于另一個數組中,現在需要我做的是將第二個數組中所有健值復制到第一個數組中(條件是:兩個數組某個健名的值是相同的情況下)

顯然內置的兩個方法都不能滿足要求(兩個方法都只是將第二個數組中的健值復制到第一個對應的健上)

?
1
2
3
4
$ar1 = array("color"=> array("favorite"=>"red","name"=>"test"));
$ar2 = array("color"=> array("favorite"=>"green","code"=>"code"));
print_r (array_merge ($ar1, $ar2));
print_r(array_merge_recursive ($ar1, $ar2));

可以看到array_merge只是將每個第二個數組的值復制到第一個數組上而已,顯然數組一favorite.name被數組二code給覆蓋了,而array_merge_recursive不會覆蓋掉相同的健名但一旦兩個數組健名相同則它會創建一個新數組并將兩個數組中值添加到新數組中

以下是我自定義的實現方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
 * @Author:   HTL
 * @Description: 根據指定的健名將$ar2中的所有健值復制到$ar1對應的健值中
 * @Return:$ar1
 */
 function array_more_merge($ar1,$ar2,$key_name){
  if(
    !$ar1
    || !is_array($ar1)
    || count($ar1)<=0
    || !$ar2
    || !is_array($ar2)
    || count($ar2)<=0
    || !$key_name
    || strlen($key_name)<=0)
  {
    return $ar1;
  }
  /*不能使用for進行循環,因為如果數組中的索引不是連續的則使用for可能無法正確的完成循環
  如 $a =
      Array(
      1 => Array("id" => 1 )
      ,8 => Array("id" => 2 )
      ,4 => Array("id" => 4 )
     );
  該數組數為3所以只能找到[1],而[8][4]在循環中不會進行處理,因為$i <=count($a)不成立<br>  */
  for ($i=0; $i <=count($a) ; $i++) {
      print_r($a[$i]);
  }
  foreach ($ar1 as $i=>$items) {
    foreach ($ar2 as $key=>$item) {
      if($ar2[$key][$key_name]==$ar1[$i][$key_name]){
        $keys = array_keys($ar2[$key]);
        foreach ($keys as $name) {
          $ar1[$i][$name] = $ar2[$key][$name];
        }
      }
    }
  }
  return $ar1;
}
$ar1 = '{"1":{"cost":"1","id":"1","total_price":"5"},"2":{"cost":"2","id":"2","total_price":"10"},"4":{"cost":"4","id":"4","total_price":"20"}}';
$ar1 = json_decode($ar1,true);
$ar2 = '{"1":{"cost":"1","id":"1","total_price":"5"},"2":{"cost":"20","id":"2","total_price":"100"},"4":{"cost":"40","id":"4","total_price":"200"}}';
$ar2 = json_decode($ar2,true);
echo "array_merge_recursive:";
print_r(array_merge_recursive($ar1,$ar2));
echo "array_merge:";
print_r(array_merge($ar1,$ar2));
echo "array_more_merge:";
print_r($this->array_more_merge($ar1,$ar2,"id"));
die();

運行結果如下圖所示:

PHP使用自定義方法實現數組合并示例

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久精品国产亚洲aa级女大片 | 精品国产91久久久久久久 | 国产在线免| 一区二区三区欧美在线 | 538任你躁在线精品视频网站 | 久久美女色视频 | hdhdhd79xxxxх | 一区二区三区四区在线 | 久久国产成人午夜av浪潮 | 精品午夜影院 | 国产一级二级在线播放 | 国产中出在线观看 | 成人wxx视频免费 | 久久国产精品二国产精品中国洋人 | 青青国产在线视频 | 少妇一级淫片免费放4p | 成年人视频免费 | 午夜视频久久久 | 一区二区三区四区五区中文字幕 | 狼伊千合综网中文 | 久久99精品久久久久久园产越南 | 亚洲成人福利在线观看 | 国产98色在线| 欧美特黄一级高清免费的香蕉 | 一级毛片a级 | 斗破苍穹在线免费 | 国产精品呻吟 | 久久精品污 | 欧美一级毛片特黄黄 | 国产精品美女久久久久久不卡 | 99激情视频| 第一福利在线 | 久久精品超碰 | 精品一区二区久久久久久久网精 | 日日草视频| 日产精品一区二区三区在线观看 | 久久亚洲成人 | 日本中文字幕网址 | 羞羞视频2023 | 逼片| 综合精品久久 |