我可以比较字符串和数组吗?


Can i compare string with array?

我正在使用$_GET['category']获取类别名称

并像这样赋值给$category

//如果$_GET['category']包含空格,则创建类别数组

if(strpos($_GET['category'],' ') !== false) {
$category = explode (' ',$_GET['category']);
}else{
$category = $_GET['category'];
}

所以$category可以是数组字符串

和我在网站上有下拉选择框,并希望通过设置selected="selected"到下拉选择中的特定选项来显示用户搜索的类别。

所以我的问题是我可以比较字符串与数组吗?,不检查如果它是一个数组,像这样。

<option value="option1"<?= (isset($category) && ($category == 'option1')) ? ' selected="selected"' : '';?>>option1</option>
<option value="option2"<?= (isset($category) && ($category == 'option2')) ? ' selected="selected"' : '';?>>option2</option>
<option value="option3"<?= (isset($category) && ($category == 'option3')) ? ' selected="selected"' : '';?>>option3</option>
<option value="option4"<?= (isset($category) && ($category == 'option4')) ? ' selected="selected"' : '';?>>option4</option>

或者我必须检查$category是否不是这样的数组。

<option value="option1"<?= (isset($category) && (!is_array($category)) && ($category == 'option1')) ? ' selected="selected"' : '';?>>option1</option>
<option value="option2"<?= (isset($category) && (!is_array($category)) && ($category == 'option2')) ? ' selected="selected"' : '';?>>option2</option>
<option value="option3"<?= (isset($category) && (!is_array($category)) && ($category == 'option3')) ? ' selected="selected"' : '';?>>option3</option>
<option value="option4"<?= (isset($category) && (!is_array($category)) && ($category == 'option4')) ? ' selected="selected"' : '';?>>option4</option>

您不需要将类别值设置为字符串。只需按如下方式使用:

if(isset($_GET['category'])) { 
$category = explode (' ',$_GET['category']);
}
<option value="option1"<?= (isset($category) && in_array('option1', $category)) ? ' selected="selected"' : '';?>>option1</option>
<option value="option2"<?= (isset($category) && in_array('option2', $category)) ? ' selected="selected"' : '';?>>option2</option>

你应该总是使用explosion。像这样,你总是得到一个数组。

$category = explode (' ',$_GET['category']);

之后,可以用

测试值是否在数组中
if(in_array($option, $category)) echo 'selected="selected";

当然你可以用字符串测试数组,而不需要测试它是数组还是字符串。但你应该测试变量isset因为空字符串等于空值如果你使用==操作符就像你在你的代码,否则你可以使用===代替