php数组如何从二维数组移动到一维

时间:2015-07-06 02:22:41

标签: php arrays string implode

原始数组

Array ( [1147183647] => 3 [2147483242] => 1 ) 

预期结果

Array (1147183647,1147183647,1147183647,2147483242)

如何根据值

扩展数组键

4 个答案:

答案 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);

演示:http://codepad.viper-7.com/NTcDhC

答案 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);