2015-06-26 2 views
0

Ошибка: установите флажки и назначьте идентификатор из query1 в elementId и значения, назначенные флажку из query2. Но проблема заключается в том, что запрос 2 не всегда возвращает полные 9 значений по сравнению с массивом1. И я хочу заменить отсутствующие значения в запросе 2 нулями после сравнения значений массива.PHP сравните Arrray1 с Array2 и найдите разницу. Затем заполните отсутствующие значения массива Array1 нулем

Мой подход:

Получить результирующий набор из двух запросов и

query 1 resultset = $tresult; 
query 1 resultset = $assignedTiles; 


$a1 = array(); 
     while ($row = mysql_fetch_row($tresult)){ 
      $a1[] = $row; 
     } 

    $a2 = array(); 
     if (mysql_num_rows($assignedTiles)==0){ 
      //echo " inside if row null"; 
    $a2 = array ('0' => array ('0'),'1' => array ('0'),'2' => array 
     ('0'),'3' => array ('0'),'4' => array ('0'),'5' => array ('0'), 
     '6' => array ('0'),'7' => array ('0'),'8' => array ('0'));  
     }else{ 
      while($row = mysql_fetch_row($assignedTiles)){ 
       $a2[] = $row; 
      } 
     }    


    foreach($a1 as $aV){ 
     $aTmp1[] = $aV['0']; //setting array key 
    } 
    foreach($a2 as $aV){ 
     $aTmp2[] = $aV['0']; 
    } 

    $resultArr = array_diff($aTmp1,$aTmp2); 
    // getting the difference in both arrays 

    if($resultArr !=NULL){ 
     foreach($resultArr as $v){ 
      $v = str_replace($resultArr, "0", $aTmp1); 
     } 
    }else { echo "did not match"; } 


    $countVal = count($v); 
    $i=0; 
    $i<$countVal; 
    $i++; 

    foreach ($v as $tileId => $value){ 

echo "<td align=center > 
<input type='checkbox' id='checkBox$tileId ' value='$value' > 
</td>"; 
    } 

I'm pretty sure there is a better way to do this. Any ideas or suggestion 
would be really appreciated. 
+1

вы используете реляционная база данных. почему вы делаете код пересечения в php, когда вы могли бы mysql тривиально сделать это для вас? RDBMES предназначены для такого рода вещей. –

+0

SELECT ** IFNULL ** (поисковые слова, 'null to string') в качестве поисковых запросов FROM 'table_article'; @Marc B является rgiht. – PHPJungle

+0

Я понимаю вашу точку зрения, но это то, что я мог бы придумать. Как вы сказали, существует 100 способов решить вышеупомянутую проблему. – edrupler

ответ

0

Попробуйте, например:

$a1 = [ 1 => 'one', 2 => 'two', 3 => 'three',5=>'fayve', 6=>'six']; 
$a2 = [ 2 => 'two', 5=>'five']; 

print_r(array_diff($a1, $a2)); 
$keys = array_keys($a1); 
foreach ($keys as $k) 
{ 
    if (!isset($a2[$k])) $a2[$k] = '0'; 
} 
print_r($a2); 

Выход:

Array 
(
    [1] => one 
    [3] => three 
    [5] => fayve 
    [6] => six 
) 
Array 
(
    [2] => two 
    [5] => five 
    [1] => 0 
    [3] => 0 
    [6] => 0 
) 
+0

Удивительно, это именно то, что я искал. Спасибо, что нашли время и ответили на мой вопрос. – edrupler