我正在尝试了解有关字符串和数组的更多信息。 我有这段代码:
<?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 不存在。
我在这里有什么不明白的?
数组包含字符串" GA"
,第一个字符为空格。这不等于没有空格的"GA"。
您应该对数组的每个元素使用 explode(", "), $states)
或调用 trim()
:
$arrayStates = array_map('trim', explode(",", $states));
您需要在
逗号后用空格爆炸。
$arrayStates = explode(", ", $states);
你正在与,
分割,但你的文本有空格,所以拆分后你有:
数组 ( [0] => OH
[1] => _VA
[2] => _GA
)
您可以按,_
拆分(将下划线替换为空格)
或者,您可以在拆分后修剪所有值,例如:
foreach ($arrayStates as $k => $v) $arrayStates[$k] = trim($v);
那是因为它被,
除以,所以你的数组内容是:
Array
(
[0] => OH
[1] => VA
[2] => GA
)
你需要做$arrayStates = explode(", ", $states);
在应用爆炸(...)后的$arrayStates中,您有:
$arrayStates[0] stores "OH"
$arrayStates[1] stores " VA"
$arrayStates[2] stores " GA"
请注意,在索引 2 处,数组存储的是"GA"(注意空格)而不是"GA",这是因为在爆炸函数中使用","。要让你的代码按照你想要的方式工作,你应该在爆炸函数中使用 ", "(注意空格)
explode 方法仅拆分逗号 ","上的字符串,并且不删除空格。结果,您最终将"GA"(您的$exists)与" GA"(数组内部,请注意空格)进行比较=]