爆炸字符串导致奇怪的数组

时间:2013-01-28 18:12:10

标签: php string explode

我有一个类似于"thing aaaa"的字符串,我正在使用explode()将字符串拆分为一个数组,其中包含由空格分隔的所有单词。我执行类似explode (" ", $string)的内容。

我不知道为什么,但结果是:["thing","","","","aaaa"];有谁知道为什么我在那里得到三个空数组?

编辑:这是我正在使用的功能:

public function query_databases() {

        $arguments_count = func_num_args();
        $status = [];
        $results = [];
        $split =[];

        if ($arguments_count > 0) {

            $arguments = func_get_args();

            $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($arguments));

            foreach ($iterator as $key => $value) {
                array_push($results, trim($value));
            }
            unset($value);

            $filtered = $this->array_unique_values($results, "String");

            foreach ($filtered as $key => $string) {

                if (preg_match('/\s/',$string)) {
                    array_push($split, preg_split("/\s/", $string));
                } else {
                    array_push($split, $string);
                }

            }
            unset($string);

            echo "Terms : ".json_encode($split)."<br>";

            foreach ($filtered as $database) {

                echo "Terms : ".json_encode()."<br>";
                $_action = $this->get_database($database);
                echo "Action : ".json_encode($_action)."<br>";
            }
            unset($database);


        } else {
            return "[ Databases | Query Databases [ Missing Arguments ] ]";
        }

    }

可能会有其他因素混淆结果?!

3 个答案:

答案 0 :(得分:1)

如果您希望按空格创建数组,可能需要考虑preg_split:

preg_split("/\s+/","thing aaaa");

给你数组(“thing”,“aaaa”);

Taken from here.

答案 1 :(得分:0)

试试这个:

$str = str_replace(" ", ",", $string);
explode(",",$str);

通过这种方式,如果你输出4个逗号,你可以看到它是否只是空格给你的问题,这是因为你有4个空格。

答案 2 :(得分:0)

正如@Barmar所说,我的trim()只删除了单词之前和之后的所有空格,这就是为什么我在数组中有更多的值而不是我应该拥有的值。

我发现这个小片段:preg_replace( '/\s+/', ' ', $value );替换我的trim()会解决它:)