如何每隔三个逗号分隔字符串?

时间:2018-08-28 12:46:21

标签: php

我有这样的字符串

234,153,25,25,85,36,40,40,188,155,60,60

我想将其插入数组,但是像这样:

[234,153,25,25],[85,36,40,40],[188,155,60,60]

我想在字符串上执行一个for循环,但是如何每4个逗号呢?

编辑: 我现在需要计算数组的长度 我尝试使用“ count ”和“ sizeof ”功能,但它们不能正确计数数组。可能是什么问题?

例如,如果数组为空,则sizeof和count返回我1

7 个答案:

答案 0 :(得分:5)

1。首先使用,的字符串explode()

2。然后,您需要使用array_chunk()来获得所需的数组

<?php

$string = '234,153,25,25,85,36,40,40,188,155,60,60';

$exploded_array = explode(',',$string);

$final_array = array_chunk(array_filter($exploded_array) ,4);

print_r($final_array);

输出:-{https://eval.in/1051388

编辑:- (如果为空字符串,则应用检查)

<?php

$string = '';

if(strlen(trim(trim($string,',')))!== 0){

    $exploded_array = explode(',',$string);

    $final_array = array_chunk(array_filter($exploded_array) ,4);

    print_r($final_array);
    echo count($final_array);
    echo sizeof($final_array);
}else{
    echo "string is empty";
}

参考:-

trim()

strlen()

array_filter()

答案 1 :(得分:3)

  1. 使用explode()将字符串转换为数组
  2. 使用array_chunk()将数组切成小块/数组

尝试这种方式:

$val = "234,153,25,25,85,36,40,40,188,155,60,60";
$strToArr = explode(",", $val);
$result = array_chunk($strToArr, 4);

答案 2 :(得分:1)

这是摘要,

<?php
$temp   = explode(",", "234,153,25,25,85,36,40,40,188,155,60,60");
$j      = $i      = 0;
$result = [];
foreach ($temp as $piece) {
    if (($i++ % 4) == 0) {
        $j++;
    }
    $result[$j][] = $piece;
}
print_r($result);

这里在工作code

答案 3 :(得分:1)

$a = '234,153,25,25,85,36,40,40,188,155,60,60';
$b = explode(',',$a);
$c = array_chunk($b,4);
print_r($c);

答案 4 :(得分:1)

首先,您应该基于,

使用explode PHP Manual函数

第二,您应该使用array_chunk PHP Manual 函数

您可以看到输出here     

$a='234,153,25,25,85,36,40,40,188,155,60,60';
$array=explode(",",$a);
$b=array_chunk($array, 4);
print_r($b);

答案 5 :(得分:0)

这是一种快速且肮脏的解决方案,但易于理解,恕我直言。

<?php

$var = '234,153,25,25,85,36,40,40,188,155,60,60,20';
// Split array by ,
$ones = explode(',', $var);

$finalArray = [];

$i = 0;
// Iterate every 4
while ($i < count($ones)) {
    $j = 0;
    $a = [];
    // Iterate every one of four
    while ($j < 4) {
        if (array_key_exists($i + $j, $ones)) {
            //if exists, add to temp array
            $a[] = $ones[$i + $j];
        }
        $j++;
    }
    // Build string from array by implode and add to final array
    $finalArray[] = implode(',', $a);
    $i+=4;
}

var_dump($finalArray);

答案 6 :(得分:0)

尝试一下。

$x = '234,153,25,25,85,36,40,40,188,155,60,60';
        $tmp = explode(",", $x);
        $array = [];
        $i = 0;
        $j = 0;
        $c = '';
        foreach($tmp as $key => $piece) {
            if($i != 0){
                $c .= ','.$piece; 
            }else{
                $c .= $piece; 
            }
            $i++;
            if($i == 3){
                $i = 0;
                $array[] = $c;
                $c = '';
            }
            $j++;
        }