程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php判斷一個數組是另一個數組的子集

php判斷一個數組是另一個數組的子集

編輯:關於PHP編程

前言
今天完成一個算法的過程中,有幾個需求模塊,其中就有判斷$a數組是否是$b數組的子集,可能最近我寫c比較多,直接就用for循環實現了,但是感覺代碼量比較大,不夠優雅!在qq群裡集思廣益了一下,發現很多php提供的系統功能函數都是可以供調用的,這裡記錄一下


需求
最少的時間復雜度判斷$a數組是否是$b數組的子集
[php]
// 快速的判斷$a數組是否是$b數組的子集  
$a = array(135,138); 
$b = array(135,138,137); 

// 快速的判斷$a數組是否是$b數組的子集
$a = array(135,138);
$b = array(135,138,137);

實現方法
這裡介紹三種方法,思路其實是相同的,差別在於實現的代碼上


for循環遍歷
[php]
$flag = 1; 
foreach ($a as $va) { 
    if (in_array($va, $b)) { 
        continue; 
    }else { 
        $flag = 0; 
        break; 
    } 

 
if ($flag) { 
    echo "Yes"; 
}else { 
    echo "No"; 

$flag = 1;
foreach ($a as $va) {
    if (in_array($va, $b)) {
        continue;
    }else {
        $flag = 0;
        break;
    }
}

if ($flag) {
    echo "Yes";
}else {
    echo "No";
}


array_diff的使用

 

 


代碼
[php]
$c = array_diff($a, $b); 
print_r($c); 
$flag = empty($c)?1 : 0; 
 
if ($flag) { 
    echo "Yes"; 
}else { 
    echo "No"; 

$c = array_diff($a, $b);
print_r($c);
$flag = empty($c)?1 : 0;

if ($flag) {
    echo "Yes";
}else {
    echo "No";
}


array_intersect的使用

 


代碼
[php]
if ($a == array_intersect($a, $b)) { 
    $flag = 1; 
}else { 
    $flag = 0; 

 
if ($flag) { 
    echo "Yes"; 
}else { 
    echo "No"; 

if ($a == array_intersect($a, $b)) {
    $flag = 1;
}else {
    $flag = 0;
}

if ($flag) {
    echo "Yes";
}else {
    echo "No";
}


後記
一個好的導師不僅可以教會我學習的方法,更可以教會我做人做事的方法,心懷感激,有擔當

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved