我从应用中收到了这些数据。我的参数列表:
现在我必须根据收到的数据更新我的订阅表。架构如下:
--cat_id--appuser_id
1 | 10 |
2 | 10 |
3 | 10 |
4 | 20 |
5 | 20 |
---------------------
那么如何在考虑查询性能的情况下做到这一点呢?我能想到的方法是:
我只能达到第1步。我想不出一种方法可以将步骤1中找到的条目与它们各自的catid相匹配。
$cat = '1,2,3';
$subs = '1,1,0';
$catA = explode(',',$cat);
$subsA = explode(',',$subs);
$deleteSubList = array();
foreach($subsA as $v){
if($v == 1){
array_push($deleteSubList,$v);
}
}
print_r($deleteSubList);
这给了我Array ( [0] => 1 [1] => 1 )
。我怎么知道它属于$catA
数组中的一个类别?
答案 0 :(得分:1)
你需要记住你的钥匙:
foreach($subsA as $key => $v){
if($v == 1){
$deleteSublist[$key] = $v;
}
}
然后$ deleteSublist将是一个数组,其中包含数组的所有ID。
foreach($deleteSublist as $key => $value) {
// Delete $cat[$key]
}
答案 1 :(得分:1)
$cat = '1,3,3';
$subs = '1,1,0';
$catA = explode(',', $cat);
$subsA = explode(',', $subs);
for ($i = 0; $i <= count($subsA); $i++) {
if ($subsA[$i] == 1) {
$deleteSubList[$catA[$i]] = $subsA[$i];
}
}
print_r($deleteSubList);
并删除:
foreach($deleteSubList as $key => $value) {
mysql_query("DELETE FROM tbl WHERE cat_id = " . $key);
}
答案 2 :(得分:0)
这是一种更简单的方法
$deleteSubList = array_filter( array_combine( $catA, $subsA ) );
$sql = sprintf( "delete from table where cat_id in(%s) and appuser_id=%s", implode( ',' array_keys( $deleteSubList ) ), $appuser_id );