PHP重复数组项基于价值

PHP重复数组项基于价值

问题描述:

我有这样的数组:PHP重复数组项基于价值

array('adult' => 2, 
     'child' => 1, 
     'infant' => 1); 

我希望新的数组是这样的:

array([0] => adult, 
     [1] => adult, 
     [2] => child, 
     [3] => infant); 
+0

你真的应该说你已经尝试过什么,并要求对如何排序它帮助。 –

$arr = array('adult' => 2, 'child' => 1,'infant' => 1); 

$result = []; // declare variable to store final result 
// Loop through array with value and keys 
foreach ($arr as $key => $val) { 
    // Loop again till as per value of the Key 
    // Will add that key in final array those many times. 
    for ($i=0; $i<$val ; $i++) { 
     $result[] = $key; 
    } 
} 

print_r($result); // will get desired output 
+0

请添加一些解释。这将有助于 –

+0

@SougataBose完成:)谢谢! – Naincy

你可以做一个foreach的数组并用于循环使用它的值

步骤1:

不要用键值对的foreach循环与数组

foreach($cars as $key => $value) 
{ 
    // 
} 

第2步:

在foreach循环中,它的循环做一个价值

for($i=0;$i<$value;$i++) 
{ 
    // 
} 

第3步:

指定的该$key值循环将新创建的数组

$newArray[] = $key; 

最后

<?php 
$cars = array('adult' => 2,'child' => 1,'infant' => 1); 
$newArray = []; // Create an Empty Array 
foreach($cars as $key => $value) 
{ 
    // Loop through the $value 
    for($i=0;$i<$value;$i++) 
    { 
     $newArray[] = $key; 
    } 
} 
print_r($newArray); 

这里的Eval Link

<?php 
$array=array('adult' => 2, 
     'child' => 1, 
     'infant' => 1); 
$final_array=[]; 

    foreach($array as $key=>$value){ 

     for($i=0;$i<(int)$value;$i++){ 
      $final_array[]=$key; 
     } 
    } 
    echo "<pre>"; 
    print_r($final_array); 
?> 

输出:

Array 
(
    [0] => adult 
    [1] => adult 
    [2] => child 
    [3] => infant 
) 

这也有助于 -

$arr = array('adult' => 2, 'child' => 1,'infant' => 1); 

$result = []; 
foreach ($arr as $key => $val) { 
    $temp = array_fill(0, $val, $key); // fill array according to value 
    $result = array_merge($result, $temp); // merge to original array 
} 

array_fill()

Working code