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"とOR演算します。

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]);
    }        
 }

それが書かれた方法は、ifがOR "user_id"$columnNameに等しいことをphpに伝えました。s_list_id条件はありませんでした。columnName"user_id" は TRUE として検証されます (そこに何かがあるため)。したがって、条件は常に TRUE であったため、元の配列からすべてが削除されます。

HTH

于 2012-09-25T22:00:12.020 に答える