建筑物的数组越来越长的字符串
问题描述:
我写这将在以下格式的数组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
这种做法很可能是低效率的,无论如何,因为这脚本应该在技术上能够处理任何长度的数组。
任何人都可以帮忙吗?
答
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
答
您正在比较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_slice
和implode
功能
foreach($arr as $key => $value){
echo implode("-",array_slice($arr, 0, $key+1))."<br/>";
}
O/P要创造一切可能的协会或只在每次迭代中添加一个字符串
one
one-two
one-two-three
做什么? –
每次迭代只需一个字符串,我现在认为。 – Forest