我有一个类似于"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 ] ]";
}
}
可能会有其他因素混淆结果?!
答案 0 :(得分:1)
如果您希望按空格创建数组,可能需要考虑preg_split:
preg_split("/\s+/","thing aaaa");
给你数组(“thing”,“aaaa”);
答案 1 :(得分:0)
试试这个:
$str = str_replace(" ", ",", $string);
explode(",",$str);
通过这种方式,如果你输出4个逗号,你可以看到它是否只是空格给你的问题,这是因为你有4个空格。
答案 2 :(得分:0)
正如@Barmar所说,我的trim()
只删除了单词之前和之后的所有空格,这就是为什么我在数组中有更多的值而不是我应该拥有的值。
我发现这个小片段:preg_replace( '/\s+/', ' ', $value )
;替换我的trim()
会解决它:)