php如何剪切数组并添加另一个字符

时间:2014-10-08 02:26:49

标签: php arrays string-length

我有一个像:

这样的数组
Array
(
  [0] => a
  [1] => b
  [2] => c
  [3] => d
  [4] => e
  [5] => f
  [6] => g
  [7] => h
) 

我希望每3个索引值添加分号(;),并从数组末尾读取结果为"ab;cde;fgh";

之类的字符串

5 个答案:

答案 0 :(得分:1)

这有效......有几种不同的方法可以做到这一点。这是在不使用第二个阵列的情况下最快的方式。

$vars = array("a","b","c","d","e","f","g","h");
print_r(insert_char($vars));

function insert_char($Array, $Delimeter=";", $Count=3) {
    for ($i = sizeOf($Array) - $Count; $i > 0; $i -= $Count) 
        array_splice($Array, $i, 0, $Delimeter);

    return implode($Array);
}

结果

ab;cde;fgh

答案 1 :(得分:1)

这是一种奇怪的方式,但由于你想要它反转,你可能需要在这里使用一些功能:

$array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h');
$array = array_reverse($array); // reverse it
$array = array_chunk($array, 3); // cut by threes
$string = '';
foreach ($array as $value) {
    $string .= implode($value); // glue them
    if(count($value) == 3) { // if still three, add a semi
        $string .= ';';
    }
}
$string = strrev($string); // then reverse them again
echo $string; // ab;cde;fgh

答案 2 :(得分:1)

这是一个有趣的,有点令人讨厌的单行:

$str = ltrim(strrev(chunk_split(implode(array_reverse($arr)), 3, ';')), ';');

示例:

$arr = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h');
$str = ltrim(strrev(chunk_split(implode(array_reverse($arr)), 3, ';')), ';');
echo $str; //ab;cde;fgh

// More sample output based on different input arrays:
$arr = array('a', 'b', 'c', 'd', 'e'); //ab;cde
$arr = array('a', 'b', 'c', 'd', 'e', 'f'); //abc;def
$arr = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k'); //ab;cde;fgh;ijk

See demo

答案 3 :(得分:0)

这是我的解决方案,虽然感觉效率低下很明显:

<?php
$myarr=Array('a','b','c','d','e','f','g','h');
$newarr=Array();
$arrsize = sizeof($myarr);
for ($x = 0, $i = 0; $x < $arrsize; $x++, $i++) {
    $newarr[$i] = $myarr[$arrsize - $x - 1];
    if (($arrsize - $x) % 3 == 0) {
        $i++;
        $newarr[$i] = ";";      
    }
}
$newarr = array_reverse($newarr);
print_r($newarr);
?>

答案 4 :(得分:0)

只是从后面遍历它并反向连接字符串也会产生结果。

$vars = array("a","b","c","d","e","f","g");
$c = 0; $s = "";
for ($i = sizeof($vars)-1; $i >= 0; $i--)
{
    $c++;
    $s = $vars[$i].$s;
    if ($c == 3) { $c = 0; $s = ";".$s; }
}

echo $s;