0

我有一个看起来像这样的字符串,"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 ] ]";
        }

    }

可能是其他东西弄乱了结果?!

4

3 回答 3

1

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

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

这给了你数组(“东西”,“aaaa”);

取自这里。

于 2013-01-28T18:17:09.863 回答
0

试试这个:

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

这样,如果您输出 4 个逗号,您可以查看是否只是空格给您带来了问题,这是因为您有 4 个空格。

于 2013-01-28T18:20:19.493 回答
0

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

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

于 2013-01-28T19:43:55.463 回答