【问题标题】:in_array alternative for check in PHP用于检查 PHP 的 in_array 替代方法
【发布时间】:2015-10-14 11:15:52
【问题描述】:

我正在使用 in_array() 来检查 product_id 的值是否在数组中,但它似乎不起作用。

这就是我在会话变量中添加带有附加信息的新 product_id 的方式:

$_SESSION['product_list']['premium'][$product_id] = array(                                                         
    "price" => $price,                                                        
    "name" => $name
);

这是我的代码,用于检查它是否已添加到会话中(以防止相同产品的重复)

$array_to_check = $_SESSION['product_list']['premium'];

if ( in_array($product_id, $array_to_check) ) {

    echo json_encode( 'already exists' );

} else {

    echo json_encode( 'successfully added' );

}

但我总是“成功添加”,即使我尝试一遍又一遍地添加相同的产品。

这段代码有什么问题?

【问题讨论】:

  • in_array 检查数组中的值。你正在做的是检查key。使用array_key_exists

标签: php arrays


【解决方案1】:

你应该使用array_key_exists -

array_key_exists($product_id, $array_to_check)

$product_id 是那个深度的关键。 in_array 检查值。

【讨论】:

    【解决方案2】:

    你可以检查为

    if(isset($_SESSION['product_list']['premium'][$product_id]))
     {
     //yes
     }
    

    【讨论】:

      【解决方案3】:
      if(isset($_SESSION['product_list']['premium'][$product_id])) {
          echo json_encode('already exists');
      } else {
          echo json_encode('successfully added');
      }
      

      除非$_SESSION['product_list']['premium'][$product_id] 为空或为假,否则为真

      【讨论】:

        【解决方案4】:

        我猜你想检查 Assoc Array 中的键,因为你应该使用 array_key_exists(),in_array() 将检查值而不是键。

        例如:

        $search_array = array('first' => 1, 'second' => 4);
        if (array_key_exists('first', $search_array)) {
            echo "The 'first' element is in the array";
        }
        

        【讨论】:

          猜你喜欢
          • 2021-05-02
          • 1970-01-01
          • 1970-01-01
          • 2020-04-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多