【发布时间】:2016-06-06 08:25:26
【问题描述】:
我有两组数组,第一个数组包含称为“全部”的所有类别,第二个数组包含称为“选定”的选定类别,我想将此概念填充到多个组合框,
$all = [
0 => [
'id'=>1,
'name' => 'news'
],
1 => [
'id'=>2,
'name' => 'tips'
],
2 => [
'id'=>3,
'name' => 'trick'
],
3 => [
'id'=>4,
'name' => 'review'
]
];
$selected = [
0 => [
'id'=>2,
'name' => 'trick'
],
1 => [
'id'=>4,
'name' => 'review'
],
];
我尝试在 foreach 中执行 foreach ,但是在组合框中显示时我有重复的数据,我希望将“all”中的所有数据与“selected”中的选定数据一起显示。
我刚刚以不同的方式解决了我的问题,首先我在“all”数组集中添加默认的键和值“sel”=>0 对,然后我循环通过数组“all”和数组“sel”来获得相似值和匹配时将 sel 键更改为 1,此代码进一步说明
public static function compare($sel,$all){
// add sel key with default value = 0
foreach($all as $k=>$v){
$all[$k]['sel'] = 0;
}
foreach($all as $k=>$v){
foreach($sel as $k2=>$v2){
// when match change sel to 1
if($v['id'] == $v2['id']){
$all[$k]['sel'] = 1;
}
}
}
return $all;
}
最终结果:
$all = [
0 => [
'id'=>1,
'name' => 'news',
'sel' => 0
],
1 => [
'id'=>2,
'name' => 'tips',
'sel' => 0
],
2 => [
'id'=>3,
'name' => 'trick',
'sel' => 1
],
3 => [
'id'=>4,
'name' => 'review',
'sel' => 1
]
];
只需在 $all['sel'] = 1 时添加 if 条件,它们应该被选中,谢谢大家 :D
【问题讨论】:
-
请显示您当前的 foreach 循环
-
请稍等
-
$x = ''; foreach($all as $a){ foreach($selected as $sel){ if($a['id'] == $sel['id']){ $x .= '<option selected>value here</option>'; }else{ $x .= '<option>value here</option>'; } } }