原始数组
Array ( [1147183647] => 3 [2147483242] => 1 )
预期结果
Array (1147183647,1147183647,1147183647,2147483242)
如何根据值
扩展数组键答案 0 :(得分:1)
遍历每个键值对,并将键添加到输出数组中,以获得值的重复次数:
$output = array();
$arr = array(1147183647 => 3, 2147483242 => 1);
foreach($arr as $v => $rep) {
for($i = 0; $i < $rep; $i++) {
$output[] = $v;
}
}
答案 1 :(得分:1)
array_fill
函数比使用2循环稍微性感一点性感
<?php
$array = array(1147183647 => 3, 2147483242 => 1);
$new=array();
foreach ($array as $key=>$var){
$new= array_merge($new,array_fill(0,$var,$key));
}
print_r($new);
答案 2 :(得分:0)
这是一个简单的代码段。
<?php
//initialize array
$array = array(
"1147183647" => 3, "2147483242" => 1
);
//new array to hold the values
$new =array();
foreach($array as $k=>$v){
//echo $k."-".$v."<br>";
for($i=0; $i<$v; $i++){
$new[] = $k;
}
}
//check the output
print_r($new);
?>
答案 3 :(得分:0)
试试这个。
$array = array(1147183647 => 3, 2147483242 => 1);
$result=array();
foreach ($array as $key=>$var){
$result= array_merge($result,array_fill(0,$var,$key));
}
var_dump($result);