字符串和数组不像我想的那样工作

时间:2013-10-31 03:59:15

标签: php arrays string

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

<?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不存在。

我在这里不理解什么?

6 个答案:

答案 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”(数组内部,请注意空格)进行比较=]