PHP 将 Arrray1 与 Array2 进行比较,找出不同之处。然后用零填充 Array1 的缺失值
PHP compare Arrray1 with Array2 and find difference. Then Fill the missing values of Array1 with zero's
问题:绘制复选框并将 query1 中的 ID 分配给 elementId,并将值分配给 query2 中的复选框。但问题是查询 2 与 array1 相比并不总是 returns 完整的 9 个值。我想在比较 array1 值后用零替换查询 2 中的缺失值。
我的方法:
获取两个查询的结果集并且
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.
试试这个,例如:
$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
)
问题:绘制复选框并将 query1 中的 ID 分配给 elementId,并将值分配给 query2 中的复选框。但问题是查询 2 与 array1 相比并不总是 returns 完整的 9 个值。我想在比较 array1 值后用零替换查询 2 中的缺失值。
我的方法:
获取两个查询的结果集并且
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.
试试这个,例如:
$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
)