Php 检查是否在数组中然后在数组中的更好方法
我正在添加以下代码以检查是否应选中复选框:Php 检查是否在数组中然后在数组中的更好方法,php,Php,我正在添加以下代码以检查是否应选中复选框: is_array($current_color_id_array) ? in_array('1', $current_color_id_array) : '' 我只是想知道是否有更好/更简洁的方法 编辑:对不起,我不够清楚,实际上我的代码是错的 这应该检查$current\u color\u id\u数组是否为数组,因为如果我不检查它,显然会给出错误警告:in\u array()期望参数2为数组 它还应该检查值是否在数组中,以将复选框标记为选中 这是
is_array($current_color_id_array) ? in_array('1', $current_color_id_array) : ''
我只是想知道是否有更好/更简洁的方法
编辑:对不起,我不够清楚,实际上我的代码是错的
这应该检查$current\u color\u id\u数组是否为数组,因为如果我不检查它,显然会给出错误警告:in\u 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'];
}
我唯一能想到的就是通过包括
$current_color_id_array = array();
脚本开头的某个地方。根据创建函数以响应文本的注释,您可以使用:
我可能会将它们组合成一个条件语句,如下所示:
$someBool = (is_array($myArray) && in_array('1', $myArray, true));
请注意,在检查诸如“1”之类的内容时,应使用与_array()中的
函数进行严格比较。上述条件可以更简洁地写成:
is_array($current_color_id_array) && in_array('1', $current_color_id_array)
这实际上与您的代码略有不同:您的代码将计算为true
或空字符串,这将是true
或false
当然,如果不检查$current\u color\u id\u array
是否为数组,则可以进一步缩小条件。变量的名称中有“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
,而不会收到警告:
in_array('1', $current_color_id_array)
如前所述,它返回一个bool
或一个空字符串
,这是故意的吗?不,我想我弄糟了。我想让它检查它是否在数组中,如果它要检查1是否在数组中,如果它不是数组,则什么也不做,因为如果我不检查它是否是数组并且没有值,我会得到警告:in_array()期望参数2是数组,多了解一些上下文可能会有帮助。您能更详细地描述这些变量吗?他们的意思和内容是什么?你写了很多次了吗?这就是你想让它更简洁的原因吗?如果是这样的话,你可以创建一个函数,用条件变量吐出代码。。我编辑了这篇文章来展示数组是如何制作的。问题是表现在是空的,所以很多项没有任何颜色,这意味着数组是空的,这会导致出现警告。谢谢。我接受这个答案是因为。。它比创建函数更有意义,因为不需要检查它是否是数组。谢谢你的帮助!
in_array('1', $current_color_id_array)