我有这个数组,而我想让它做的就是循环,然后删除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]);
}
}
感谢您提供的任何帮助
答案 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