0

我有这个数组,我想做的就是循环遍历并删除出现在 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]);  
                          }        
                      }

感谢您的任何帮助

4

3 回答 3

3

运算符优先级:您正在执行 $columnName = "s_list_id",然后将结果与 "user_id" 进行 ORing

if($columnName == "s_list_id" || $columnName == "user_id"){
于 2012-09-25T21:56:21.770 回答
0

问题是你的if陈述:

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

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

你可能想要这样的东西:

if (in_array($columnName, array('s_list_id', 'user_id')))
于 2012-09-25T21:56:41.240 回答
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 if$columnName等于s_list_idOR "user_id"。条件不在其中,columnName并且“user_id”验证为 TRUE(因为其中包含某些内容)。因此,您的条件始终为 TRUE,从而从原始数组中删除所有内容。

高温高压

于 2012-09-25T22:00:12.020 回答