我在数组中添加了一个带有长句子的变量,并且我有正确的语法来分隔单词。然而,当我尝试show array key 1,2,3时,我得到了错误Undefined offset
。
这是我的示例代码:
$quote = '"';
$string = $quote.'asds dasddsfaf fdf
ewfejfierjfnsdafjafj sdf dwiofjwejf iosad dsfosdofjeijfmkslad f
dfsijioewjo fsdlfa'.$quote;
$newstring = implode('", "', preg_split('/[\s]+/', $string));
$arrayz = array($newstring);
echo $arrayz[2];
只是回应$newstring
给了我:
"asds", "dasddsfaf", "fdf", "ewfejfierjfnsdafjafj", "sdf", "dwiofjwejf", "iosad", "dsfosdofjeijfmkslad", "f", "dfsijioewjo", "fsdlfa"
答案 0 :(得分:2)
我认为你过于复杂化了。这里没有必要使用preg_split
。只需使用explode()即可。试试这个:
$commer = '"';
$string = $commer.'asds dasddsfaf fdf
ewfejfierjfnsdafjafj sdf dwiofjwejf iosad dsfosdofjeijfmkslad f
dfsijioewjo fsdlfa'.$commer;
$newstring = explode(' ', $string);
print_r($newstring);
输出:
Array
(
[0] => "asds
[1] => dasddsfaf
[2] => fdf
[3] => ewfejfierjfnsdafjafj
[4] => sdf
[5] => dwiofjwejf
[6] => iosad
[7] => dsfosdofjeijfmkslad
[8] => f
[9] => dfsijioewjo
[10] => fsdlfa"
)
根据评论进行修改。这应该做你想要的:
$commer = '"';
$string = 'asds dasddsfaf fdf ewfejfierjfnsdafjafj sdf dwiofjwejf iosad dsfosdofjeijfmkslad f dfsijioewjo fsdlfa';
$arrayz = array();
foreach(explode(' ', $string) as $word) {
$arrayz[] = $commer . $word . $commer;
}
print_r($arrayz);
输出:
Array
(
[0] => "asds"
[1] => "dasddsfaf"
[2] => "fdf"
[3] => "ewfejfierjfnsdafjafj"
[4] => "sdf"
[5] => "dwiofjwejf"
[6] => "iosad"
[7] => "dsfosdofjeijfmkslad"
[8] => "f"
[9] => "dfsijioewjo"
[10] => "fsdlfa"
)
答案 1 :(得分:1)
$commer = '"';
$string = $commer.'asds dasddsfaf fdf
ewfejfierjfnsdafjafj sdf dwiofjwejf iosad dsfosdofjeijfmkslad f
dfsijioewjo fsdlfa'.$commer;
$arrayz = preg_split('/[\s]+/', $string);
echo $arrayz[2];
使用preg_split('/[\s]+/', $string, -1, PREG_SPLIT_NO_EMPTY);
也是一个好主意,因此如果有双重,前导或尾随空格,您将不会以空条目结束。
答案 2 :(得分:0)
你只在一个数组中分配了一个元素,因此数组的大小只有1,即;你只能访问$ arrayz [0]。 尝试在循环中使用,直到字符串结束并同时存储。 这可能会解决。
答案 3 :(得分:0)
array($var)
从另一个数组创建一个数组(如果$var
是一个数组),否则创建一个单元素数组。由于implode()
从内爆数组返回string
,array($newstring)
将创建一个内爆字符串的单元素数组!