这就是我的数组的样子:
Array
(
[0] => Array
(
[unit] => 10
[harga] => 15000
)
[1] => Array
(
[unit] => 7
[harga] => 10000
)
[2] => Array
(
[unit] => 12
[harga] => 123123
)
)
我想在单位为0时取消设置0键数组并重新排列键,以便1键将替换0。
我就是这样做的:
$jumlah_penjualan = $data - > unit;
while ($jumlah_penjualan > 0) {
$persediaan_pertama = $persediaan[0]['unit'];
$harga_persediaan = $persediaan[0]['harga'];
if ($persediaan_pertama < $jumlah_penjualan) {
$dijual = $persediaan_pertama;
$penjualan[] = array(
'unit' => $dijual,
'harga' => $harga_persediaan,
'total' => $dijual * $harga_persediaan);
$persediaan[0]['unit'] = $persediaan[0]['unit'] - $dijual;
} else {
$dijual = $jumlah_penjualan;
$penjualan[] = array(
'unit' => $dijual,
'harga' => $harga_persediaan,
'total' => $dijual * $harga_persediaan);
$persediaan[0]['unit'] = $persediaan[0]['unit'] - $dijual;
}
if ($persediaan[0]['unit'] == 0) {
unset($persediaan[0]);
$persediaan = array_values($persediaan);
}
$jumlah_penjualan = $jumlah_penjualan - $dijual;
}
但结果看起来在重新排列数组之前会继续循环。 这是未设置后数组的样子:
Array(
[0] => Array
(
[unit] => 9
[harga] => 123123
)
)
答案 0 :(得分:0)
如果要删除第一个元素,直到单位不为0,您可以
$arr = array
(
array
(
"unit" => 0,
"harga" => 15000
),
array
(
"unit" => 0,
"harga" => 10000
),
array
(
"unit" => 12,
"harga" => 123123
)
);
while( $arr[0]["unit"] == 0 ) { //Loop until $arr[0]["unit"] is not 0
unset($arr[0]); //Remove $arr[0] since unit is 0
$arr = array_values($arr); //Make Make element 1 to element 0
}
echo "<pre>";
print_r( $arr );
echo "</pre>";
这将导致:
Array
(
[0] => Array
(
[unit] => 12
[harga] => 123123
)
)
答案 1 :(得分:0)
要删除数组的第一个元素并重新索引元素,请使用array_shift
。首先,检查单位数是否为零,然后删除第一个元素,如果是这样的话。
if ($arr[0]['unit'] == 0) {
array_shift($arr);
}
由于语言不能说出你的其他变量甚至意味着什么,你可能想要将它移到你的while循环之外,这样第一个元素只有在你处理后才会删除数组。