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)