例如,我有一个数组:
$x = array("a", "b", "c", "d", "e");
是否有任何函数可以迭代数组的所有值并将这些值复制到:
$x = array("a", "a", "b", "b", "c", "c", "d", "d", "e", "e");
在google了一段时间后,我没有找到任何相关的解决方案。
非常感谢!
例如,我有一个数组:
$x = array("a", "b", "c", "d", "e");
是否有任何函数可以迭代数组的所有值并将这些值复制到:
$x = array("a", "a", "b", "b", "c", "c", "d", "d", "e", "e");
在google了一段时间后,我没有找到任何相关的解决方案。
非常感谢!
看起来像一个相当简单的减少(使用array_reduce()
)
$x = array_reduce($x, function($arr, $val) {
array_push($arr, $val, $val);
return $arr;
}, []);
刚刚意识到“减少”听起来有点有趣,因为我们正在使数组更大。更多地把它想象成一种转变。见https://en.wikipedia.org/wiki/Reduce_(parallel_pattern)
遍历数组并将值存储在新数组中是一个简单的解决方案。
$x = array("a", "b", "c", "d", "e");
$result_array = [];
$repeat_x_times = 2;
foreach ($x as $element) {
for ($i = 0; $i < $repeat_x_times ; $i++) {
$result_array[] = $element;
}
}
不确定是否有用于此的库函数,但您是否正在寻找类似以下内容的内容:
function duplicate_array($array=array()) {
$result = array();
foreach($array as $elem) {
$result[] = $elem;
$result[] = $elem;
}
return $result;
}
这在理论上应该做你想要的。
$x = array("a", "b", "c", "d", "e");
var_dump($x);
$x = duplicate_array($x);
var_dump($x);
这应该输出:
array(5) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
[4]=>
string(1) "e"
}
array(10) {
[0]=>
string(1) "a"
[1]=>
string(1) "a"
[2]=>
string(1) "b"
[3]=>
string(1) "b"
[4]=>
string(1) "c"
[5]=>
string(1) "c"
[6]=>
string(1) "d"
[7]=>
string(1) "d"
[8]=>
string(1) "e"
[9]=>
string(1) "e"
}