php - 我可以将字符串与数组进行比较吗?

时间:2014-07-23 05:01:47

标签: php arrays

我使用$_GET['category']

获取类别名称

并将其分配给$category

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

if(strpos($_GET['category'],' ') !== false) {

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

}else{

$category = $_GET['category'];

}

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

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

所以我的问题是我可以将字符串与数组进行比较吗?,而不检查它是否是一个数组,就像这样。

<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>

3 个答案:

答案 0 :(得分:2)

您无需将类别值设置为字符串。 只需使用如下。

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>

答案 1 :(得分:1)

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

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

之后,您可以使用

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

答案 2 :(得分:0)

当然你可以测试一个带有字符串的数组,如果它是数组或者它是字符串,那么你应该测试变量isset,因为如果你使用的话,空字符串等于空值与您在代码中执行的操作符==相同,否则您可以使用===代替