更好的方法来检查是否在数组中,然后在数组中

时间:2011-11-22 03:34:22

标签: php

我正在添加以下代码以检查是否应选中复选框:

is_array($current_color_id_array) ? in_array('1', $current_color_id_array) : ''

我只是想知道是否有更好/更简洁的方法可以做到这一点?

编辑:对不起,我不够清楚,实际上我的代码错了..

这应该检查$ current_color_id_array是否是一个数组,因为显然如果我不检查它会给我错误警告:in_array()期望参数2是数组

并且还应该检查值是否在数组中以将复选框标记为已选中。

这是复选框功能的所有部分:

function tep_draw_checkbox_field($name, $value = '', $checked = false, $compare = '') {
    return tep_draw_selection_field($name, 'checkbox', $value, $checked, $compare);
  }

这是第三个参数。所以,如果我可以重新考虑,我会说有更好的写作方式:

tep_draw_checkbox_field('color_id[]', '1', (is_array($current_color_id_array) && in_array('1', $current_color_id_array)))

以防万一,这是数组的制作方式:

$color_id_query = tep_db_query("select color_id from " . TABLE_PRODUCTS_TO_COLORS . " where products_id = '" . (int)$product['products_id'] . "'");

    while ($color_id_row = mysql_fetch_array ($color_id_query)) {
    $current_color_id_array[] = $color_id_row['color_id'];
    }

4 个答案:

答案 0 :(得分:3)

您上面的条件可以更简洁地写成:

is_array($current_color_id_array) && in_array('1', $current_color_id_array)

这实际上略微与您所拥有的不同:您的代码将评估为true或空字符串,这将是true或{{1} }。

当然,如果您没有检查false是否为数组,您可以进一步缩小条件。变量得到了#34;数组"就在这个名称中,您的代码是否实际上留下了它 数组的可能性?

编辑:查看您的扩展问题,因为您完全负责创建阵列,因此很容易避免需要确保"确保"确保"确保"确保" 34;你的数组存在。只要确保你正在初始化你的数组变量,你就可以确定它总是被设置并且它将永远是一个数组。

$current_color_id_array

然后,您可以直接检查数组中的$current_color_id_array = array(); $color_id_query = tep_db_query("select color_id from " . TABLE_PRODUCTS_TO_COLORS . " where products_id = '" . (int)$product['products_id'] . "'"); while ($color_id_row = mysql_fetch_array ($color_id_query)) { $current_color_id_array[] = $color_id_row['color_id']; } ,并且您没有机会收到警告:

1

答案 1 :(得分:1)

根据创建回显文本功能的注释,您可以使用this function

function is_array_value($a,$b){
return (is_array($b)&&in_array($a, $b)) ? true : false;
}

答案 2 :(得分:0)

我唯一能想到的就是保证$current_color_id_array 实际一个数组,包括

$current_color_id_array = array();

在脚本开头的某处。

答案 3 :(得分:0)

我可能会将它们组合成一个条件语句,如下所示:

$someBool = (is_array($myArray) && in_array('1', $myArray, true));

请注意,在检查“1”之类的内容时,您应该使用in_array()函数进行严格比较。