T8888

比如原数组是

array(\'1\',\'2\',\'3\',\'4\');

我需要得到的结果

array(\'aaa1\',\'aaa2\',\'aaa3\',\'aaa4\');

用内置函数如何实现?

 

array_walk() + str_pad() 也可以实现:

<?php
$ar = array(\'1\',\'2\',\'3\',\'4\');
 
array_walk(
    $ar,
    function (&$s, $k, $prefix = \'aaa\') {
        $s = str_pad($s, strlen($prefix) + strlen($s), $prefix, STR_PAD_LEFT);
    }
);
 
var_dump($ar);

输出结果为:

array(4) {
  [0]=>
  string(4) "aaa1"
  [1]=>
  string(4) "aaa2"
  [2]=>
  string(4) "aaa3"
  [3]=>
  string(4) "aaa4"
}

 

如果不使用闭包效率会更高,但 str_pad() 需要带多个参数,而 array_walk 只能传递一个参数,
所以目前只能这样了。

 

嗯,直接是没有的,不过可以有简便写法什么的

<?php
    $arr = array(\'1\',\'2\',\'3\',\'4\');
    $arr = array_map(create_function(\'$item\', \'return "aaa$item";\'), $arr);
    print_r($arr);
?>
<?php
    $a = array(1, 2, 3, 4);
 
    array_walk(
        $a, 
        function(&$value, $key, $prefix){$value = $prefix.$value;}, 
        \'aaa\'
    );
 
    var_dump($a);

原文:https://www.cnblogs.com/wgphp/p/8465821.html

比如原数组是

1
array(\'1\',\'2\',\'3\',\'4\');

我需要得到的结果

1
array(\'aaa1\',\'aaa2\',\'aaa3\',\'aaa4\');

用内置函数如何实现?

 

array_walk() + str_pad() 也可以实现:

1
2
3
4
5
6
7
8
9
10
11
<?php
$ar = array(\'1\',\'2\',\'3\',\'4\');
 
array_walk(
    $ar,
    function (&$s, $k, $prefix = \'aaa\') {
        $s = str_pad($s, strlen($prefix) + strlen($s), $prefix, STR_PAD_LEFT);
    }
);
 
var_dump($ar);

输出结果为:

1
2
3
4
5
6
7
8
9
10
array(4) {
  [0]=>
  string(4) "aaa1"
  [1]=>
  string(4) "aaa2"
  [2]=>
  string(4) "aaa3"
  [3]=>
  string(4) "aaa4"
}

 

如果不使用闭包效率会更高,但 str_pad() 需要带多个参数,而 array_walk 只能传递一个参数,
所以目前只能这样了。

 

嗯,直接是没有的,不过可以有简便写法什么的

1
2
3
4
5
<?php
    $arr = array(\'1\',\'2\',\'3\',\'4\');
    $arr = array_map(create_function(\'$item\', \'return "aaa$item";\'), $arr);
    print_r($arr);
?>

 

1
2
3
4
5
6
7
8
9
10
<?php
    $a = array(1, 2, 3, 4);
 
    array_walk(
        $a,
        function(&$value, $key, $prefix){$value = $prefix.$value;},
        \'aaa\'
    );
 
    var_dump($a);

分类:

技术点:

相关文章: