2016-11-10 48 views
0

我想将每个元素连接到下一个元素。我想输出数组是:foreach将每个元素连接到下一个

Array 
(
[0] => test 
[1] => test/test2 
[2] => test/test2/test3 
[3] => test/test2/test3/test4 
) 

我尝试以下方法,其串接每个字符串本身:

$url = preg_split("/[\s\/]+/", "test/test2/test3/test4"); 
foreach ($url as $dir) { 
    $dir .= $dir; 
} 

任何帮助表示赞赏。

+2

你有错误吗? ..错误的结果? .. 没有结果 ? .. 有什么问题? – scaisEdge

+0

你放弃了还是什么? – AbraCadaver

回答

1

也许另一种方式

<?php 
$data = array('test', 'test2', 'test3', 'test4'); 
for($i = 0; $i < count($data); $i++) 
{ 
    if($i != 0) 
    { 
    $new[ $i ] = $new[ $i - 1 ] .'/'. $data[ $i ]; 
    } 
    else 
    { 
    $new[ $i ] = $data[ $i ]; 
    } 
} 

的var_dump($新);

输出

array(4) { 
    [0]=> 
    string(4) "test" 
    [1]=> 
    string(10) "test/test2" 
    [2]=> 
    string(16) "test/test2/test3" 
    [3]=> 
    string(22) "test/test2/test3/test4" 
} 
0
$url = preg_split("/[\s\/]+/", "test/test2/test3/test4"); 
$arr = array(); 
$str = ''; 
foreach ($url as $key => $dir) { 

    if ($key !== 0) { 
     $str .= '/' . $dir; 
    } else { 
     $str .= $dir; 
    } 

    $arr[] = $str; 
} 

在每次迭代concate用新值的字符串,并将其添加为您的输出阵列的单独的值。

+0

虽然此代码片段可能会解决问题,但它并不能解释为什么或如何回答问题。请[请提供您的代码解释](// meta.stackexchange.com/q/114762/269535),因为这确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。 **举报人/评论者:** [仅限代码解答,例如downvote,请勿删除!](// meta.stackoverflow.com/a/260413/2747593) –

1

你应该获得你需要在$ my_array

$url = explode("/", "test/test2/test3/test4"); 

$str =''; 
foreach($url as $key => $value){ 
    if ($str == '') { 
    $str .= $str; 
    } else { 
    $str .= '/'.$str; 
    } 
    $my_array[$key] = $str ; 
    echo $str . '<br />'; 

} 

var_dump($my_array); 
0

结果这里有一个快速的方法。对于简单的分割只是用explode()

$url = explode("/", "test/test2/test3/test4"); 

foreach($url as $value) { 
    $temp[] = $value; 
    $result[] = implode("/", $temp); 
} 

每一次循环中,当前值添加到一个临时的数组,并将其内爆到结果的下一个元素。

相关问题