2016-11-09 21 views
4
while($row = $update_post->fetch_array()){ 
         //Explodes checkbox values 
         $res = $row['column_name']; 
         $field = explode(",", $res); 

         $arr = array('r1','r2,'r3','r4','r5','r6'); 

          if (in_array($arr, $field)) { 
           echo "<script>alert('something to do')</script>"; 
          }else{ 
           echo "<script>alert('something to do')</script>"; 
          } 
    } 

$ arrの値が$ fieldの値と等しいかどうかをチェックする方法。PHPで2つの配列を比較する方法

ありがとうございました。

+1

は、in_arrayがここ – devpro

+0

チェックチャットで応答... – devpro

答えて

4

2つの配列を一致させたい場合は、ここでarray_intersect()を使用する必要があります。

あなたは、ここでループを使用する必要があるよりも、in_array()で特定の値をチェックしたい場合:

<?php 
$res = $row['column_name']; 
$field = explode(",", $res); 
$arr = array('r1','r2','r3','r4','r5','r6'); 
foreach ($arr as $value) { 
    if(in_array($value, $field)) { 
     echo "success"; 
    } 
    else{ 
     echo "failed"; 
    } 
}  
?> 

According to manual: in_array - 小切手値が配列

に存在する場合は、またことに注意してください配列に構文エラーがあります。

$arr = array('r1','r2,'r3','r4','r5','r6'); // missing quote here for r2 

更新:

、あなたがそのように確認することができるよりもarray_intersect()を使用する場合:

<?php 
$arr1 = array('r1','r2'); 
$arr2 = array('r1','r2','r3','r4','r5','r6'); 
$result = !empty(array_intersect($arr1, $arr2)); 
if($result){ 
    echo "true"; 
} 
else{ 
    echo "false"; 
} 
?> 

DEMO

アップデート2:

あなたがしたい場合はarray_intersect()を使用してどの値を取得しているかを確認するあなたは次のように使用することができます:

<?php 
$arr1 = array('r2'); 
$arr2 = array('r1','r2','r3','r4','r5','r6'); 
$result = array_intersect($arr1, $arr2); 
if(count($result)){ 
    echo "Following ID(s) found: ".implode(",",$result); 
} 
?> 

DEMO

+0

動作しませんどのような$フィールドの値が 'R1'、 'R2' の場合、 'r3'のみ。 array_intersectがtrueを返しますか? – oo7

+0

@ oo7:いいえarray_intersectは、一致した配列のみを返します。 – devpro

+0

は、$ fieldが$ arrのインデックスと等しいかどうかをどうにか知る方法ですか? – oo7

1

は、配列の値が持つマッチを知ってcountでチェックしarray_intersectことにより、2つの配列を比較...

array_intersect

を比較します2つの配列の値を返し、一致を返します。

while($row = $update_post->fetch_array()){ 
    //Explodes checkbox values 
    $res = $row['column_name']; 
    $field = explode(",", $res); 

    $arr = array('r1','r2','r3','r4','r5','r6'); 

     if (count(array_intersect($arr, $field)) > 0) { 
      echo "<script>alert('duplicate array')</script>"; 
     }else{ 
      echo "<script>alert('something to do')</script>"; 
     } 

}

uは `array_intersect`を使用する必要が
+0

のチャットで応答を確認し、$ arrの値がr2だった場合と比較してください。 trueを返します。どうすればいい? – oo7

+0

trueを返していない場合は、一致する配列を返します。$ fieldがr2の値を持つ場合、$ arrと比較するとr2の値を返します。その戻り値の配列が0より大きい場合は、一致する配列があることを意味します。 –

+0

その場合、$ arrで一致するインデックスの位置を特定できますか? – oo7

関連する問題