数组中的变量不起作用

时间:2014-06-06 02:07:12

标签: php arrays variables

我在数组中添加了一个带有长句子的变量,并且我有正确的语法来分隔单词。然而,当我尝试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"

4 个答案:

答案 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()从内爆数组返回stringarray($newstring)将创建一个内爆字符串的单元素数组!