【问题标题】:How to access a particular key->value pair and exclude a specific key->value pair from an associative array in PHP?如何访问特定的键-> 值对并从 PHP 中的关联数组中排除特定的键-> 值对?
【发布时间】:2013-07-08 05:13:53
【问题描述】:

我有一个名为 $_SESSION[BASE_SESSION_NAME]['my_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_id 值或值 ok 键 pack_id 的键。 即例如值 [31dc7c5d9b9cb5a2ba968e74efd4a475] 或来自键 pack_id 的值 作为[pack_id] => 31dc7c5d9b9cb5a2ba968e74efd4a475。 但问题是还有一个数组存在密钥[cart_summary],我不想使用该数组中的任何东西。 我必须对每个这样的 pack_id 进行查询。所以我想在循环的帮助下触发一个查询。谁能帮我解决这个问题?提前致谢。我要使用的查询如下:

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_summary”。如果不是,则触发查询。希望这会有所帮助
  • @saranbanerjee:我对这个 foreach 的关联数组概念比较陌生。你能给我它的代码吗?我会非常感谢你。
  • 好的,我会把它作为答案提供给你。
  • @saranbanerjee:好的,没问题。谢谢你帮助我。等待您的答复。

标签: php sql arrays associative-array


【解决方案1】:

unset($arr["item"]) 从名为 $arr 的数组中删除键为“item”的项目。

【讨论】:

    【解决方案2】:

    这是您在评论中要求的关联数组的 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'";
             ......
    
         }
     }
    

    我希望这能有所帮助。

    【讨论】:

    • 非常感谢萨兰。这真的是我想要的。你也节省了我宝贵的时间和精力。再次感谢。我已将您的答案标记为已接受并支持该答案。
    【解决方案3】:

    如果我很清楚你想要什么,你应该使用循环并寻找正确的密钥。

    如果您的后端语言是 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
        }
    }
    

    希望对您有所帮助...

    【讨论】:

      【解决方案4】:

      一种方法是您可以直接检查 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'";
      
           }
       }
      

      【讨论】:

      • :非常感谢 Nishu。这就是我想要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 2021-03-16
      • 2018-03-12
      • 1970-01-01
      • 2014-03-21
      • 2021-03-05
      • 1970-01-01
      相关资源
      最近更新 更多