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