建筑物的数组越来越长的字符串

问题描述:

我写这将在以下格式的数组PHP函数:建筑物的数组越来越长的字符串

array(
    'one', 
    'two', 
    'three' 
) 

和回声以下字符串:

one 
one-two 
one-two-three 

我不能弄清楚如何做到这一点。我一直在使用一个变量来存储前一个,然后用它尝试过,但它仅适用于一个:

$previous = null; 
for($i = 0; $i < count($list); $i++) { 
    echo ($previous != null ? $route[$previous] . "-" : '') . $route[$i]; 
    $previous = $i; 
} 

对外输出:

one 
two 
two-three 

这种做法很可能是低效率的,无论如何,因为这脚本应该在技术上能够处理任何长度的数组。

任何人都可以帮忙吗?

+0

做什么? –

+0

每次迭代只需一个字符串,我现在认为。 – Forest

for ($i = 1, $length = count($array); $i <= $length; $i++) { 
    echo join('-', array_slice($array, 0, $i)), PHP_EOL; 
} 

$arr = array('one', 'two', 'three'); 

foreach (array_keys($arr) as $index) { 
    $result = array(); 
    foreach ($arr as $key => $val) { 
     if ($key <= $index) { 
      $result[] = $val; 
     } 
    } 
    echo implode('-', $result) . '<br />'; 
} 

另一种:

$data = array('one','two','three'); 
$str = ''; 
$len = count($data); 
for ($i=0; $i<$len;$i++){ 
$delim = ($i > 0) ? '-' : ''; 
$str .=  $delim . $data[$i]; 
echo $str .'<br>'; 
} 

我们可以以提取从阵列的第一个元素使用array_shift()。然后我们就可以遍历值,并把它们添加到字符串:

<?php 

$array = array(
    'one', 
    'two', 
    'three' 
); 

// Get the first element from the array (it will be removed from the array) 
$string = array_shift($array); 
echo $string."\n"; 

foreach ($array as $word) { 
    $string = implode('-', array($string, $word)); 
    echo $string."\n"; 
} 

输出:

one 
one-two 
one-two-three 

Demo in Codepad

您正在比较0!= null,问题来自于只有一个=的比较,试试!==,它应该可以工作。

$arr = ['one','two','three']; 

doSomething($arr); 

function doSomething($arr) { 
    foreach($arr as $key=>$val) { 
     $s = array_slice($arr,0,($key+1)); 
     echo implode('-',$s) . "<br>"; 
    } 
} 

使用array_sliceimplode功能

foreach($arr as $key => $value){ 
    echo implode("-",array_slice($arr, 0, $key+1))."<br/>"; 
} 

O/P要创造一切可能的协会或只在每次迭代中添加一个字符串

one 
one-two 
one-two-three