在PHP中,查找是否存在内部数组的值,如果找到,则删除该数组
我有一个相当简单的二维数组。我正在尝试编写一个函数,用于查找某个内部数组中是否存在值。这并不难。问题是,一旦找到,我需要删除整个内部数组。这就是我遇到的问题。似乎不可能使用foreach循环 无论如何,这是数组。谢谢在PHP中,查找是否存在内部数组的值,如果找到,则删除该数组,php,arrays,Php,Arrays,我有一个相当简单的二维数组。我正在尝试编写一个函数,用于查找某个内部数组中是否存在值。这并不难。问题是,一旦找到,我需要删除整个内部数组。这就是我遇到的问题。似乎不可能使用foreach循环 无论如何,这是数组。谢谢 $booksInCart = Array (Array ('bookId' => 344, 'quantity' => 1), Array ('bookId' => 54, 'quantity' => 1),
$booksInCart = Array (Array ('bookId' => 344, 'quantity' => 1),
Array ('bookId' => 54, 'quantity' => 1),
Array ('bookId' => 172, 'quantity' => 2),
Array ('bookId' => 3, 'quantity' => 1)
);
您可以做的是将内部数组的索引也存储在循环中,然后如果找到该值,则使用该索引将其从外部数组中删除。比如:
foreach ($booksInCart as $id => $inner) {
// Second foreach loop because you didn't specify which value you're checking
// and I want to insure complete thoroughness
foreach ($inner as $key => $value) {
if ($key == $requiredkey && $value == $requiredvalue) {
unset($booksInCart($id));
}
}
}
<?php
//Your cart array
$booksInCart = Array (
Array ('bookId' => 344, 'quantity' => 1),
Array ('bookId' => 54, 'quantity' => 1),
Array ('bookId' => 172, 'quantity' => 2),
Array ('bookId' => 3, 'quantity' => 1)
);
//User function to rebuild the array leaving out the bookID you want removed
function delete_book_from_cart($bookID, $haystack){
$ret = array();
foreach($haystack as $key=>$item){
if($item['bookId'] == $bookID) continue;
$ret[$key]=$item;
}
return $ret;
}
//Use like so
$booksInCart = delete_book_from_cart(172, $booksInCart);
/* Result
Array
(
[0] => Array
(
[bookId] => 344
[quantity] => 1
)
[1] => Array
(
[bookId] => 54
[quantity] => 1
)
[3] => Array
(
[bookId] => 3
[quantity] => 1
)
)
*/
print_r($booksInCart);
?>
您可以做的是将内部数组的索引也存储在循环中,然后如果找到该值,则使用该索引将其从外部数组中删除。比如:
foreach ($booksInCart as $id => $inner) {
// Second foreach loop because you didn't specify which value you're checking
// and I want to insure complete thoroughness
foreach ($inner as $key => $value) {
if ($key == $requiredkey && $value == $requiredvalue) {
unset($booksInCart($id));
}
}
}
<?php
//Your cart array
$booksInCart = Array (
Array ('bookId' => 344, 'quantity' => 1),
Array ('bookId' => 54, 'quantity' => 1),
Array ('bookId' => 172, 'quantity' => 2),
Array ('bookId' => 3, 'quantity' => 1)
);
//User function to rebuild the array leaving out the bookID you want removed
function delete_book_from_cart($bookID, $haystack){
$ret = array();
foreach($haystack as $key=>$item){
if($item['bookId'] == $bookID) continue;
$ret[$key]=$item;
}
return $ret;
}
//Use like so
$booksInCart = delete_book_from_cart(172, $booksInCart);
/* Result
Array
(
[0] => Array
(
[bookId] => 344
[quantity] => 1
)
[1] => Array
(
[bookId] => 54
[quantity] => 1
)
[3] => Array
(
[bookId] => 3
[quantity] => 1
)
)
*/
print_r($booksInCart);
?>
使用带有键和值的
foreach
循环。使用键取消设置()子数组。
foreach ($booksInCart as $key => $sub) {
if ($sub['bookId'] == 172) {
unset($booksInCart[$key]);
}
}
使用带有键和值的
foreach
循环。使用键取消设置()子数组。
foreach ($booksInCart as $key => $sub) {
if ($sub['bookId'] == 172) {
unset($booksInCart[$key]);
}
}
尝试以下方法:
foreach ($booksInCart as $id => $inner) {
// Second foreach loop because you didn't specify which value you're checking
// and I want to insure complete thoroughness
foreach ($inner as $key => $value) {
if ($key == $requiredkey && $value == $requiredvalue) {
unset($booksInCart($id));
}
}
}
<?php
//Your cart array
$booksInCart = Array (
Array ('bookId' => 344, 'quantity' => 1),
Array ('bookId' => 54, 'quantity' => 1),
Array ('bookId' => 172, 'quantity' => 2),
Array ('bookId' => 3, 'quantity' => 1)
);
//User function to rebuild the array leaving out the bookID you want removed
function delete_book_from_cart($bookID, $haystack){
$ret = array();
foreach($haystack as $key=>$item){
if($item['bookId'] == $bookID) continue;
$ret[$key]=$item;
}
return $ret;
}
//Use like so
$booksInCart = delete_book_from_cart(172, $booksInCart);
/* Result
Array
(
[0] => Array
(
[bookId] => 344
[quantity] => 1
)
[1] => Array
(
[bookId] => 54
[quantity] => 1
)
[3] => Array
(
[bookId] => 3
[quantity] => 1
)
)
*/
print_r($booksInCart);
?>
诸如此类尝试以下方法:
foreach ($booksInCart as $id => $inner) {
// Second foreach loop because you didn't specify which value you're checking
// and I want to insure complete thoroughness
foreach ($inner as $key => $value) {
if ($key == $requiredkey && $value == $requiredvalue) {
unset($booksInCart($id));
}
}
}
<?php
//Your cart array
$booksInCart = Array (
Array ('bookId' => 344, 'quantity' => 1),
Array ('bookId' => 54, 'quantity' => 1),
Array ('bookId' => 172, 'quantity' => 2),
Array ('bookId' => 3, 'quantity' => 1)
);
//User function to rebuild the array leaving out the bookID you want removed
function delete_book_from_cart($bookID, $haystack){
$ret = array();
foreach($haystack as $key=>$item){
if($item['bookId'] == $bookID) continue;
$ret[$key]=$item;
}
return $ret;
}
//Use like so
$booksInCart = delete_book_from_cart(172, $booksInCart);
/* Result
Array
(
[0] => Array
(
[bookId] => 344
[quantity] => 1
)
[1] => Array
(
[bookId] => 54
[quantity] => 1
)
[3] => Array
(
[bookId] => 3
[quantity] => 1
)
)
*/
print_r($booksInCart);
?>
等等
unset
是一个函数,而不是一个语言关键字;我已经添加了它们。unset
是一个函数,不是语言关键字。谢谢,我忘记了括号;我把它们加进去了。