0

我正在尝试了解有关字符串和数组的更多信息。我有这段代码:

<?php
$states = "OH, VA, GA";
$arrayStates = explode(",", $states);
$exists = "GA";
print_r($arrayStates);

if (in_array($exists, $arrayStates)){
    echo "<br/>" . $exists . " " . "exists.";
} else {
    echo "<br/>" . $exists . " " . "doesn't exist.";
}
?>

根据我微弱的想法,GA应该存在于数组中。如果我输入 $exists = "OH",那就行得通。但屏幕显示:

Array ( [0] => OH [1] => VA [2] => GA ) 

GA 不存在。

我在这里不明白什么?

4

6 回答 6

5

该数组包含" GA"以空格作为第一个字符的字符串。这不等于没有空格的“GA”。

您应该使用explode(", "), $states)或调用trim()数组的每个元素:

$arrayStates = array_map('trim', explode(",", $states));
于 2013-10-31T04:02:42.680 回答
1

您需要在逗号后加一个空格。

$arrayStates = explode(", ", $states);
于 2013-10-31T04:01:29.793 回答
1

您正在拆分,,但您的文本有空格,因此拆分后您有:

数组( [0] => OH[1] => _VA[2] => _GA

您可以按,_(用空格替换下划线)分割

或者您可以在拆分后修剪所有值,例如:

foreach ($arrayStates as $k => $v) $arrayStates[$k] = trim($v);

于 2013-10-31T04:02:43.437 回答
1

那是因为它被除以,所以你的数组内容是:

Array
(
    [0] => OH
    [1] =>  VA
    [2] =>  GA
)

你需要做$arrayStates = explode(", ", $states);

于 2013-10-31T04:03:35.717 回答
1

在应用 explode(...) 之后的 $arrayStates 中,您有:

$arrayStates[0] stores "OH"
$arrayStates[1] stores " VA"
$arrayStates[2] stores " GA"

请注意,在索引 2 处,数组存储的是“GA”(注意空格)而不是“GA”,这是因为在explode 函数中您使用的是“,”。为了让你的代码按照你的意愿工作,你应该在explode函数中使用“,”(注意空格)

于 2013-10-31T04:09:31.240 回答
0

explode 方法仅拆分逗号“,”上的字符串,并且不删除空格。结果,您最终将“GA”(您的 $exists)与“GA”(在数组内部,注意空格)进行比较 =]

于 2013-10-31T04:03:59.000 回答