Php 比较复选框的关联数组键和值

Php 比较复选框的关联数组键和值,php,checkbox,cakephp-1.3,Php,Checkbox,Cakephp 1.3,我有一个带有事件空间复选框的web表单 复选框值取自我的数据库“设施\事件\费用”中的一个表: 假设我检查了5和6,“视听设备”和“视听技术人员”,并提交了我的表格 这将把id保存到我为该“事件空间”准备的单独表中 假设我的“事件空间”的ID为63。由于我选中了两个复选框,查找表现在有两个“我的id”条目: 一切都很好,都得救了。 现在,假设我需要实际编辑与这个空间相关的电荷 单击“编辑”时,我的Web表单呈现表单字段,但复选框为空!!为什么?因为它正在从我的“设施事件费用”表中获取数据

我有一个带有事件空间复选框的web表单

复选框值取自我的数据库“设施\事件\费用”中的一个表:

假设我检查了5和6,“视听设备”和“视听技术人员”,并提交了我的表格

这将把id保存到我为该“事件空间”准备的单独表中 假设我的“事件空间”的ID为63。由于我选中了两个复选框,查找表现在有两个“我的id”条目:

一切都很好,都得救了。 现在,假设我需要实际编辑与这个空间相关的电荷

单击“编辑”时,我的Web表单呈现表单字段,但复选框为空!!为什么?因为它正在从我的“设施事件费用”表中获取数据

我需要将此表数据(数组)与保存在查找表(数组)中的数据进行比较,以确定哪些值是公共值,并在这些复选框中进行勾选

在我的编辑空间网络表单中,所需的结果将被选中

我的复选框“费用”数组:

-- 我还可以通过以下方式生成费用:

array(6) { 
[0]=> array(1) { ["FacilityEventCharge"]=> array(2) { ["id"]=> string(1) "1" ["type"]=> string(9) "Officials" } } 
[1]=> array(1) { ["FacilityEventCharge"]=> array(2) { ["id"]=> string(1) "2" ["type"]=> string(6) "Ushers" } } 
[2]=> array(1) { ["FacilityEventCharge"]=> array(2) { ["id"]=> string(1) "3" ["type"]=> string(19) "Additional Staffing" } } 
[3]=> array(1) { ["FacilityEventCharge"]=> array(2) { ["id"]=> string(1) "4" ["type"]=> string(16) "Special Lighting" } } 
[4]=> array(1) { ["FacilityEventCharge"]=> array(2) { ["id"]=> string(1) "5" ["type"]=> string(22) "Audio Visual Equipment" } } 
[5]=> array(1) { ["FacilityEventCharge"]=> array(2) { ["id"]=> string(1) "6" ["type"]=> string(23) "Audio Visual Technician" } } } 
我的查找表数组:

array(2) { 
[0]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "5" } } 
[1]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "6" } } 
} 
-- 我的尝试失败了-尝试过php数组 数组_相交_关联 数组映射('array\u diff\u assoc'))

我需要循环检查checkbox charges数组并从查找表数组中找到匹配项,当匹配项匹配时,将复选框标记为“checked”

有人有我可以测试的工作示例吗? 复选框charges array是匹配设施事件费用id所需的内容

此功能有效

但它将根据您最终构建阵列的方式而改变。。。但这只需要修改if-then语句,可能还需要修改i(索引变量)的值


这很有效

但它将根据您最终构建阵列的方式而改变。。。但这只需要修改if-then语句,可能还需要修改i(索引变量)的值



根据上面给出的数组,可以这样比较

例如,
将$charge数组作为

array(6) { 
[1]=> string(9) "Officials" 
[2]=> string(6) "Ushers" 
[3]=> string(19) "Additional Staffing" 
[4]=> string(16) "Special Lighting" 
[5]=> string(22) "Audio Visual Equipment" 
[6]=> string(23) "Audio Visual Technician" 
}
array(2) { 
[0]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "5" } } 
[1]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "6" } } 
}
$lookup数组作为

array(6) { 
[1]=> string(9) "Officials" 
[2]=> string(6) "Ushers" 
[3]=> string(19) "Additional Staffing" 
[4]=> string(16) "Special Lighting" 
[5]=> string(22) "Audio Visual Equipment" 
[6]=> string(23) "Audio Visual Technician" 
}
array(2) { 
[0]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "5" } } 
[1]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "6" } } 
}
您可以
比较两个数组,如下所示

$charges = array(
    1 => "Officials",
    2 => "Ushers",
    3 => "Additional Staffing",
    4 => "Special Lighting",
    5 => "Audio Visual Equipment",
    6 => "Audio Visual Technician"
);
$lookup = array(
    array("EventCharge" => array(
            "facility_event_charges_id" => "5"
        )
    ), array(
        "EventCharge" => array(
            "facility_event_charges_id" => "6"
        )
    )
);
$lookup = array_column(array_column($lookup, 'EventCharge'), 'facility_event_charges_id');
foreach ($charges as $key => $value) {
    echo '<input type="checkbox" name="charges" value="' . $key . '" '.(in_array($key, $lookup)?"checked":"").'>';
    echo '<label>'.$value.'<label>';
}
$charges=array(
1=>“官员”,
2=>“引座员”,
3=>“额外人员配置”,
4=>“特殊照明”,
5=>“视听设备”,
6=>“视听技术员”
);
$lookup=数组(
数组(“EventCharge”=>数组(
“设施\u事件\u费用\u id”=>“5”
)
),数组(
“EventCharge”=>阵列(
“设施\u事件\u费用\u id”=>“6”
)
)
);
$lookup=array\u column(array\u column($lookup,'EventCharge'),'facility\u event\u charges\u id');
foreach($key=>$value){
回声';
回显“.$value.”;
}
编辑

如果不支持array_column(),则可以使用下面的循环和test创建数组

$arr=array();
foreach ($lookup as $key => $value) {
    foreach ($value as $k => $v) {
        $arr[]=$v['facility_event_charges_id'];
    }    
}
foreach ($charges as $key => $value) {
    echo '<input type="checkbox" name="charges" value="' . $key . '" '.(in_array($key, $arr)?"checked":"").'>';
    echo '<label>'.$value.'<label>';
}
$arr=array();
foreach($key=>$value查找){
foreach($k=>v的值){
$arr[]=$v['facility\u event\u charges\u id'];
}    
}
foreach($key=>$value){
回声';
回显“.$value.”;
}

根据上面给出的数组,您可以这样进行比较

例如,
将$charge数组作为

array(6) { 
[1]=> string(9) "Officials" 
[2]=> string(6) "Ushers" 
[3]=> string(19) "Additional Staffing" 
[4]=> string(16) "Special Lighting" 
[5]=> string(22) "Audio Visual Equipment" 
[6]=> string(23) "Audio Visual Technician" 
}
array(2) { 
[0]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "5" } } 
[1]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "6" } } 
}
$lookup数组作为

array(6) { 
[1]=> string(9) "Officials" 
[2]=> string(6) "Ushers" 
[3]=> string(19) "Additional Staffing" 
[4]=> string(16) "Special Lighting" 
[5]=> string(22) "Audio Visual Equipment" 
[6]=> string(23) "Audio Visual Technician" 
}
array(2) { 
[0]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "5" } } 
[1]=> array(1) { ["EventCharge"]=> array(1) { ["facility_event_charges_id"]=> string(1) "6" } } 
}
您可以
比较两个数组,如下所示

$charges = array(
    1 => "Officials",
    2 => "Ushers",
    3 => "Additional Staffing",
    4 => "Special Lighting",
    5 => "Audio Visual Equipment",
    6 => "Audio Visual Technician"
);
$lookup = array(
    array("EventCharge" => array(
            "facility_event_charges_id" => "5"
        )
    ), array(
        "EventCharge" => array(
            "facility_event_charges_id" => "6"
        )
    )
);
$lookup = array_column(array_column($lookup, 'EventCharge'), 'facility_event_charges_id');
foreach ($charges as $key => $value) {
    echo '<input type="checkbox" name="charges" value="' . $key . '" '.(in_array($key, $lookup)?"checked":"").'>';
    echo '<label>'.$value.'<label>';
}
$charges=array(
1=>“官员”,
2=>“引座员”,
3=>“额外人员配置”,
4=>“特殊照明”,
5=>“视听设备”,
6=>“视听技术员”
);
$lookup=数组(
数组(“EventCharge”=>数组(
“设施\u事件\u费用\u id”=>“5”
)
),数组(
“EventCharge”=>阵列(
“设施\u事件\u费用\u id”=>“6”
)
)
);
$lookup=array\u column(array\u column($lookup,'EventCharge'),'facility\u event\u charges\u id');
foreach($key=>$value){
回声';
回显“.$value.”;
}
编辑

如果不支持array_column(),则可以使用下面的循环和test创建数组

$arr=array();
foreach ($lookup as $key => $value) {
    foreach ($value as $k => $v) {
        $arr[]=$v['facility_event_charges_id'];
    }    
}
foreach ($charges as $key => $value) {
    echo '<input type="checkbox" name="charges" value="' . $key . '" '.(in_array($key, $arr)?"checked":"").'>';
    echo '<label>'.$value.'<label>';
}
$arr=array();
foreach($key=>$value查找){
foreach($k=>v的值){
$arr[]=$v['facility\u event\u charges\u id'];
}    
}
foreach($key=>$value){
回声';
回显“.$value.”;
}

您好,您可以使用以下代码。我假设您有$arr=array('5','6');从数据库。所以你可以告诉我们如下

<?php
$arr=array('5'=>'Audio Visual Equipment','6'=>'Audio Visual Technician');
$arr=array_keys($arr);//if you have associated array
?>



<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="ISO-8859-1"> 
</head>
<body>
    <input type="checkbox" name="charges" value="1" <?=in_array('1', $arr)?'checked=true':''?>> Officials<br>
    <input type="checkbox" name="charges" value="2" <?=in_array('2', $arr)?'checked=true':''?>> Ushers<br>
    <input type="checkbox" name="charges" value="3" <?=in_array('3', $arr)?'checked=true':''?>> Additional Staffing <br>
    <input type="checkbox" name="charges" value="4" <?=in_array('4', $arr)?'checked=true':''?>> Special Lighting <br>
    <input type="checkbox" name="charges" value="5" <?=in_array('5', $arr)?'checked=true':''?>> Audio Visual Equipment<br>
    <input type="checkbox" name="charges" value="6" <?=in_array('6', $arr)?'checked=true':''?>> Audio Visual Technician<br>
</body>
</html>

>引座员
>特殊照明
>视听技师

您好,您可以使用以下代码。我假设您有$arr=array('5','6');从数据库。所以你可以告诉我们如下

<?php
$arr=array('5'=>'Audio Visual Equipment','6'=>'Audio Visual Technician');
$arr=array_keys($arr);//if you have associated array
?>



<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="ISO-8859-1"> 
</head>
<body>
    <input type="checkbox" name="charges" value="1" <?=in_array('1', $arr)?'checked=true':''?>> Officials<br>
    <input type="checkbox" name="charges" value="2" <?=in_array('2', $arr)?'checked=true':''?>> Ushers<br>
    <input type="checkbox" name="charges" value="3" <?=in_array('3', $arr)?'checked=true':''?>> Additional Staffing <br>
    <input type="checkbox" name="charges" value="4" <?=in_array('4', $arr)?'checked=true':''?>> Special Lighting <br>
    <input type="checkbox" name="charges" value="5" <?=in_array('5', $arr)?'checked=true':''?>> Audio Visual Equipment<br>
    <input type="checkbox" name="charges" value="6" <?=in_array('6', $arr)?'checked=true':''?>> Audio Visual Technician<br>
</body>
</html>

>引座员
>特殊照明
>视听技师

我正在尝试此操作,但在将我的数组设置为$ec[]$ec是数组(2){[0]=>array(1){[“EventCharge”]=>array(1){[“facility\u event\u charges\u id”]=>string(1)“5”}[1]=>array(1){[“EventCharge”]=>array(1){“facility\u event\u charges id”]=>string(1)“6”}张贴您如何构建包含(最终)您的事件收费。可能是一种更简单的方法,它将是一个非常简单的数组,如my$ec$sqlFields=array(“facility_event_charges_id”);$sqlConditions=array(“facility_event_charges_id”);$sqlParams=array(“facility_event_spaces_id”=>('fields'=>$sqlFields,'conditions'=>$sqlConditions,'order'=>$sqlOrderBy);$ec=$this->EventCharge->find('all',$sqlParams);$this->set('ec',$ec);$this->set('ec',$ec);按空间id查找所有内容-在本例中,id=63将生成数组(2){[0]=>array(1){[“EventCharge”]=>array(1){“facility"EventCharge”=>string(1){=>array(1){[“facility\u event\u charges\u id”]=>string(1)“6”}