2017-02-16 2 views
0

У меня есть массив с этим:PHP элемент повтора массива на основе значения

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

Я хочу, чтобы новый массив быть похожим на это:

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

Вы должны действительно сказать, что вы попробовали и попросить о помощи о том, как сортировать его. –

ответ

1
$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 Done :) спасибо! – Naincy

0

Вы можете сделать Еогеасп в массив и использование для цикла с его значением

Этап 1:

ли цикл Еогеасп с парой ключей значения с вашего массива

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

0
<?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 
) 
2

Это помогло бы также -

$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

Смежные вопросы