2016-02-26 14 views
5

Tôi viết một hàm PHP rằng sẽ mất một mảng theo định dạng sau:Xây dựng chuỗi ngày càng dài từ một mảng

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

Và tiếng vang chuỗi kí tự sau:

one 
one-two 
one-two-three 

tôi không thể tìm ra cách để làm điều này. Tôi đã cố gắng sử dụng một biến để lưu trữ trước đó và sau đó sử dụng nó, nhưng nó chỉ hoạt động cho một:

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

xuất ra:

one 
two 
two-three 

Cách tiếp cận đó có lẽ sẽ là không hiệu quả dù sao, như thế này kịch bản về mặt kỹ thuật có thể xử lý bất kỳ độ dài mảng nào.

Ai đó có thể trợ giúp?

+0

Bạn có muốn tạo tất cả các hiệp hội có thể hoặc chỉ có thêm một chuỗi tại mỗi lần lặp? –

+0

Chỉ một chuỗi tại mỗi lần lặp lại, tôi nghĩ hiện tại. – Forest

Trả lời

6
for ($i = 1, $length = count($array); $i <= $length; $i++) { 
    echo join('-', array_slice($array, 0, $i)), PHP_EOL; 
} 
3
$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 />'; 
} 
2

Một số khác:

$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>'; 
} 
2

Chúng ta có thể sử dụng array_shift() để trích xuất các phần tử đầu tiên từ mảng. Sau đó, chúng ta có thể lặp qua các giá trị và gắn nó vào một chuỗi:

<?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"; 
} 

Output:

one 
one-two 
one-two-three 

Demo in Codepad.

3

Bạn đang so sánh 0! = Null, vấn đề xuất phát từ việc so sánh chỉ với một =, hãy thử! ==, nó sẽ hoạt động.

2
$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>"; 
    } 
} 
1

sử dụng array_sliceimplode chức năng

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

o/p

one 
one-two 
one-two-three 
Các vấn đề liên quan