从元素为键值php的数组中生成数组元素

问题描述 投票:1回答:3

我有一个要重写的数组,其中许多元素作为任何键的值

Array
(
    [cap] => 3
    [shirt] => 2
    [tatuaggio] => 1
    [badge] => 2
)

并且我想要此输出

Array
(
    cap,cap,cap,shirt,shirt,tatuaggio,badge,badge
)

所以我可以拥有所有数据,并将数组拆分为具有7个元素的多个数组当我有循环

foreach ($array_caselle as $k => $v) {
    //with this I have access to all key, but how can I do an other foreach for the value of each key?
  }
php arrays
3个回答
1
投票

使用嵌套的for循环。

$result = [];
foreach ($array_caselle as $key => $count) {
    for ($i = 0; $i < $count; $i++) {
        $result[] = $key;
    }
}

或使用array_fill()

$result = [];
foreach ($array_caselle as $key => $count) {
    $result = array_merge($result, array_fill(0, $count, $key));
}

0
投票

array_fill()call_user_func_array()一起以及array_merge()一起用作回调参数

$finalArray = [];
foreach ($array_caselle as $k => $v) {
   $finalArray[]= array_fill(0,$v,$k);
}
$finalArray = call_user_func_array('array_merge', $finalArray);
print_r($finalArray);

https://3v4l.org/DC5KI


0
投票

可以将array_fillarray_merge一起使用

$res=[];
foreach($a as $k => $v){
  $res[] = array_fill(0, $v, $k);
}
print_r(array_merge(...$res));// splat operator

如果您的PHP版本不支持splat运算符,则可以使用

$res=[];
foreach($a as $k => $v){
 $res = array_merge($res,array_fill(0, $v, $k));
}

使用foreachfor

$res=[];
foreach($a as $k => $v){
 for($i=0;$i<$v;$i++) $res[] = $k;
}

工作示例:-https://3v4l.org/AJnfn

© www.soinside.com 2019 - 2024. All rights reserved.