論php數組合並


注:盡量不要在循環中操作數據庫。

array_merge():一個神奇的方法

1.兩個一維數組合並成一個一維數組

   $a = array('morning','afternoon','night');

   $b = array('breakfast','lunch','dinner');

   (1)以$a中的數組元素為鍵名,以$b中的數組元素為鍵值而形成的一個新數組。

          $c = array_combine($a,$b);

   (2)將$a中與$b中鍵值相同的數組元素剔除,僅保留$a中不同的數組元素。也就是說返回差集。

          $c=array_diff($a,$b);

  

    (3)將$a中與$b中鍵名和鍵值同時相同的數組元素剔除,僅保留$a中不同的數組元素,也就是說返回差集數組。        

         $a = array('morning','afternoon','night');
         $b = array('breakfast','lunch','night');
         $c=array_diff_assoc($a,$b);
         print_r($c);

輸出結果為:

     (4)將$a中與$b中鍵名相同的數組元素剔除,僅保留$a中不同的數組元素,也就是說返回差集數組。

          $c=array_diff_key($a,$b);

         空數組。

     (5)將$a中與$b中鍵名和鍵值同時相同的數組元素剔除,僅保留$a中不同的數組元素,也就是說返回差集數組,然后使用用戶自定義函數比較此差集數組中的鍵名,對數組重新排序。

     (6)將$a中與$b中鍵名相同的數組元素剔除,僅保留$a中不同的數組元素,也就是說返回差集數組,然后使用用戶自定義函數比較此差集數組中的鍵名,對數組重新排序。

            $a = array('morning','afternoon','night','today','yesterday','tomorrow');

            $b = array('breakfast','lunch','night');
            $c=array_diff_ukey($a,$b,function($a,$b){
              if($a==$b)
                 return 0;
             return ($a>$b)?-1:1;
           });
           print_r($c);

      (7)將$a中與$b中鍵值相同的數組元素返回,鍵名為$a中對應的數組鍵名。(或者是更多數組,返回的是共有的交集)

             $a = array('morning','afternoon','today','night','yesterday','tomorrow');
             $b = array('breakfast','lunch','night');
             $c = array_intersect($a,$b);
             print_r($c);

     (8)將一個或多個數組合並為一個數組。

            1.如果兩個或多個數組元素有相同的鍵名,則最后的元素會覆蓋其他元素。如果輸入的數組鍵名是整數,則該函數將返回帶有整數鍵名的新數組,其鍵名以0開始進行重新索引。

$a = array('sun'=>'陽光','moon'=>'月光');

$b = array('dog'=>'狗狗','cat'=>'小貓');
$c = array_merge($a,$b);
print_r($c);

$a = array('sun'=>'陽光','moon'=>'月光','守望'=>'麥田');
$b = array('dog'=>'狗狗','cat'=>'小貓','守望'=>'先鋒');
$c = array_merge($a,$b);
print_r($c);

          2.array_merge_recursive() 不會進行鍵名覆蓋,而是將多個相同鍵名的值遞歸組成一個數組。

$a = array('sun'=>'陽光','moon'=>'月光','守望'=>'麥田');
$b = array('dog'=>'狗狗','cat'=>'小貓','守望'=>'先鋒');
$c = array_merge_recursive($a,$b);
print_r($c);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM