- array_sum: documentation ( source)
- reset: documentation ( source)
- print_r: documentation ( source)
- end: documentation ( source)
- array_keys: documentation ( source)
<?php
$types = array(
"text" => 2,
"image" => 3,
"audio" => 2,
);
$data = []; $keys = array_keys($types); $last = end($keys);
while (list($type, $count) = @each($types)) {
if ($count !== 0) { // push until count reaches zero
$data[] = $type; // push it inside
$types[$type]--; // subtract 1 count
}
if ($type === $last) { // if reached the end, reset the loop
reset($types);
}
if (array_sum($types) === 0) { // end the loop if all are gone
break;
}
}
print_r($data);
?>