删除数组的某些元素不起作用

时间:2012-09-25 21:54:31

标签: php

我有这个数组,而我想让它做的就是循环,然后删除if中出现的某些元素,但每当我输出数组时它总是只显示

array(0) { }

而不是

["addon_h_id"]=> string(1) "1"

这是循环它的代码,如果我删除此代码,则数组显示为正常

        foreach ($new_shopping_array as $columnName => $columnData) {
                          if($columnName == "s_list_id" || "user_id"){
                              unset($new_shopping_array[$columnName]);  
                          }        
                      }

感谢您提供的任何帮助

3 个答案:

答案 0 :(得分:3)

Operator precedence:您正在执行$ columnName =“s_list_id”,然后将结果与“user_id”进行或运算

if($columnName == "s_list_id" || $columnName == "user_id"){

答案 1 :(得分:0)

问题是你的if声明:

if($columnName == "s_list_id" || "user_id")

字符串"user_id"将评估为true,因此将删除所有值。

您可能需要以下内容:

if (in_array($columnName, array('s_list_id', 'user_id')))

答案 2 :(得分:0)

怎么样:

$new_array = array();

foreach ($new_shopping_array as $columnName => $columnData) 
{
    if ($columnName != "s_list_id" && $columnName != "user_id")
    {
        $new_array[$columnName] = $columnData;
    }        
 }

$ new_array包含您需要的数据。

如果您更喜欢您的解决方案,您需要稍微改变条件:

foreach ($new_shopping_array as $columnName => $columnData) 
{
    if ($columnName == "s_list_id" || $columnName == "user_id")
    {
        unset($new_shopping_array[$columnName]);
    }        
 }

它的编写方式告诉php,如果$columnName等于s_list_id或“user_id”。条件不在columnName和“user_id”验证为TRUE(因为它有一些东西)。因此,您的条件始终为TRUE,从而删除原始数组中的所有内容。

HTH