php - 如何从数组中删除特定数量的元素
问题描述
我有一个函数,它从数组中删除元素:
function remove_from_cart($prod_name,$price,$params,$count)
{
$cart = array(
"0" => array (
'name' => 'Bolognese - Small (26cm)',
'params' => '',
'price' => '12'),
"1" => array (
'name' => 'Bolognese - Small (26cm)',
'params' => '',
'price' => '12')
);
$prod_arr = array(
"name"=> $prod_name,
"params"=> $params,
"price" => $price);
$count = count( array_keys( $cart, $prod_arr ));
while(($key = array_search($prod_arr, $cart)) !== false) {unset($cart[$key]);}
return array('cart' => $cart, 'count' => $count);
}
$rem = remove_from_cart('Bolognese - Small (26cm)', '12', $params, 1);
//here is i want to remove just 1 of 2 elements
如何修改此函数以设置我想从数组中删除的元素数量?
谢谢!
解决方案
你的例子和问题不是很清楚,但你可以检查这个解决方案:
<?php
function remove_from_cart($prod_name,$price,$params,$count)
{
$cart = array(
"0" => array (
'name' => 'Bolognese - Small (26cm)',
'params' => '',
'price' => '12'),
"1" => array (
'name' => 'Bolognese - Small (26cm)',
'params' => '',
'price' => '12'),
"2" => array (
'name' => 'Bolognese - Small (26cm)',
'params' => '',
'price' => '12')
);
$prod_arr = array(
"name"=> $prod_name,
"params"=> $params,
"price" => $price);
$i = 0;
while(($key = array_search($prod_arr, $cart)) !== false && $i < $count) {unset($cart[$key]); $i++;}
return array('cart' => $cart, 'count' => $count);
}
$params = '';
$rem = remove_from_cart('Bolognese - Small (26cm)', '12', $params, 1);
var_dump($rem);
这将返回两个元素,因为它们是 3 个元素,并且您传递 1,因为$count
如果您传递 2,它将返回 1 个元素:
结果$rem = remove_from_cart('Bolognese - Small (26cm)', '12', $params, 1);
:
array(2) { ["cart"]=> array(2) { [1]=> array(3) { ["name"]=> string(24) "Bolognese - Small (26cm)" ["params"]=> string(0) "" ["price"]=> string(2) "12" } [2]=> array(3) { ["name"]=> string(24) "Bolognese - Small (26cm)" ["params"]=> string(0) "" ["price"]=> string(2) "12" } } ["count"]=> int(1) }
结果$rem = remove_from_cart('Bolognese - Small (26cm)', '12', $params, 2);
:
array(2) { ["cart"]=> array(1) { [2]=> array(3) { ["name"]=> string(24) "Bolognese - Small (26cm)" ["params"]=> string(0) "" ["price"]=> string(2) "12" } } ["count"]=> int(2) }
推荐阅读
- google-apps-script - onEdit updates top row only after editing multiple rows, but not after copy paste
- python - How can I limit the columns that are seen in a table created with Treeview?
- python - Resizing frameless dialog using QPushButtons
- javascript - 摩卡看不到捆绑的js
- c# - ReSharper 建议将模型类转换为抽象类,我应该这样做吗?
- firebase - How can i dispose or close a listen function from Firestore?
- redux - Redux TypeError: Cannot read property 'list' of undefined
- oauth-2.0 - Issue with access to the Google account by using OAuth
- python - How to install Git package on WIndows with python
- reactjs - React Set State within useEffect refresh page