如何访问特定密钥->;值对并排除特定键->;PHP中关联数组的值对?
我有一个名为如何访问特定密钥->;值对并排除特定键->;PHP中关联数组的值对?,php,sql,arrays,associative-array,Php,Sql,Arrays,Associative Array,我有一个名为$\u SESSION[BASE\u SESSION\u NAME]['my\u cart']的关联数组。为供参考,我正在按如下方式打印阵列: Array ( [6f993b72511c37f4ab4d7273066b8160] => Array ( [pack_id] => 6f993b72511c37f4ab4d7273066b8160 [pack_type] => test
$\u SESSION[BASE\u SESSION\u NAME]['my\u cart']
的关联数组。为供参考,我正在按如下方式打印阵列:
Array
(
[6f993b72511c37f4ab4d7273066b8160] => Array
(
[pack_id] => 6f993b72511c37f4ab4d7273066b8160
[pack_type] => test
[pack_type_id] => 4
[pack_name] => NEET XII Biology
[pack_price] => 459.00
[pack_validity] => Array
(
[years] => 1
[months] => 0
[days] => 0
)
)
[cart_summary] => Array
(
[total_no_packages] => 3
[total_pack_price] => 1557
[final_total_pack_price] => 1557
[total_pack_discount] => 0
[apply_deal_code] => 0
[no_of_discounted_packages] => 0
)
[67f76ffae26ffdcde7a392c5534c972a] => Array
(
[pack_id] => 67f76ffae26ffdcde7a392c5534c972a
[pack_type] => test
[pack_type_id] => 4
[pack_name] => NEET XII Chemistry
[pack_price] => 599.00
[pack_validity] => Array
(
[years] => 1
[months] => 0
[days] => 0
)
)
[31dc7c5d9b9cb5a2ba968e74efd4a475] => Array
(
[pack_id] => 31dc7c5d9b9cb5a2ba968e74efd4a475
[pack_type] => test
[pack_type_id] => 4
[pack_name] => NEET XII Physics
[pack_price] => 499.00
[pack_validity] => Array
(
[years] => 1
[months] => 0
[days] => 0
)
)
)
现在,我只想访问具有pack\u id值或值ok键的键pack\u id
。
i、 例如,值[31dc7c5d9b9cb5a2ba968e74efd4a475]或钥匙pack_id
as[pack_id]=>31dc7c5d9b9cb5a2ba968e74efd4a475
。
但问题是还有一个数组具有键[cart\u summary]
,我不想使用该数组中的任何东西。
我必须对每个这样的包id发出一个查询,所以我想在loop的帮助下发出一个查询。有人能帮我解决这个问题吗?提前谢谢。我想使用的查询如下:
SELECT package_type.package_type_name
FROM package_type
JOIN test_packages ON package_type.package_type_id = test_packages.test_pack_type_id
WHERE test_packages.test_pack_id = '$propsed_pack_id'
unset($arr[“item”])
从名为$arr的数组中删除键为“item”的项。以下是您在注释中要求的关联数组的foreach
$mycart = $_SESSION[BASE_SESSION_NAME]['my_cart'];// where $mycart is the array structure
//as shown above in the question
foreach($mycart as $key=>$value)
{
//where $key holds the pack_id i.e. the array key value
$propsed_pack_id = $value['pack_id'];
if($key != "cart_summary")
{
//execute you sql query
$query = "SELECT package_type.package_type_name
FROM package_type
JOIN test_packages ON package_type.package_type_id =
test_packages.test_pack_type_id
WHERE test_packages.test_pack_id = '$propsed_pack_id'";
......
}
}
我希望这能有所帮助。如果我很清楚您想要什么,您应该使用循环并查找正确的键 如果您的后端语言是PHP
foreach($_SESSION[BASE_SESSION_NAME]['my_cart'] as $cart) {
if (isset($cart['pack_id'])) {
// Here you get the pack id, only if exist as a key inside the array
}
}
希望对您有所帮助。一种方法是您可以按照saran banerjee所说的,直接为“购物车摘要”进行检查 但我建议,您可以在数组中检查“pack_id”键,而不是对“cart summary”进行硬编码检查。如果存在,则对该pack_id执行查询,否则不会
$mycart = $_SESSION[BASE_SESSION_NAME]['my_cart'];
foreach($mycart as $key=>$value)
{
//where $key holds the pack_id
$propsed_pack_id = isset($value['pack_id']) ? $value['pack_id'] : '';
if($propsed_pack_id != "")
{
//execute you sql query
$query = "SELECT package_type.package_type_name
FROM package_type
JOIN test_packages ON package_type.package_type_id =
test_packages.test_pack_type_id
WHERE test_packages.test_pack_id = '$propsed_pack_id'";
}
}
当在数组中循环(使用foreach)时,你可以使用if条件来检查键是否为“cart\u summary”。如果不是,则触发查询。希望这样做help@saranbanerjee:对于关联数组概念,我对这个foreach比较陌生。你能给我提供密码吗。我真的很感谢你。好的,我会给你一个答案。@saranbanerjee:好的,没问题。谢谢你帮助我。等待你的回答。非常感谢你,saran。这正是我想要的。你也节省了我宝贵的时间和精力。再次感谢你。我已经将你的答案标记为接受,并对答案进行了投票:非常感谢Nishu。这就是我想要的。