1

我有一个具有 128 个值的字符串,格式为:

1,4,5,6,0,0,1,0,0,5,6,...1,2,3.

我想以以下形式配对:

(1,4),(5,6),(7,8)

这样我就可以使用 PHP 为 64 个数据创建一个 for 循环。

4

2 回答 2

3

您可以通过以下步骤完成此操作:

  1. 用于explode()将字符串转换为数字数组

  2. 用于array_chunk()形成两人一组

  3. 用于array_map()将每个组变成带括号的字符串

  4. 用来join()把所有东西粘在一起。

您可以使用这种美味的单线,因为每个人都喜欢这些:

echo join(',', array_map(function($chunk) {
    return sprintf('(%d,%d)', $chunk[0], isset($chunk[1]) ? $chunk[1] : '0');
}, array_chunk(explode(',', $array), 2)));

演示

如果最后一个块小于两个项目,它将'0'用作第二个值。

于 2013-04-16T04:33:21.997 回答
1
<?php
$a = 'val1,val2,val3,val4';

function x($value)
    {
        $buffer = explode(',', $value);
        $result = array();

        while(count($buffer))
            { $result[] = array(array_shift($buffer), array_shift($buffer)); }

        return $result;
    }

$result = x($a);

var_dump($result);
?>

显示:

array(2) { [0]=> array(2) { [0]=> string(4) "val1" [1]=> string(4) "val2" } [1]=> array(2) { [0]=> string(4) "val3" [1]=> string(4) "val4" } }

如果修改它,那么它可能会以这种方式帮助您:

<?php
$a = '1,2,3,4';

function x($value)
    {
        $buffer = explode(',', $value);
        $result = array();

        while(count($buffer))
            { $result[] = sprintf('(%d,%d)', array_shift($buffer), array_shift($buffer)); }

        return implode(',', $result);
    }

$result = x($a);

var_dump($result);
?>

这表明:

string(11) "(1,2),(3,4)"
于 2013-04-16T04:23:40.717 回答