【问题标题】:How to empty the content of a key belonging to an associative array without unsetting the key in PHP?如何在不取消设置 PHP 中的键的情况下清空属于关联数组的键的内容?
【发布时间】:2015-08-04 00:49:29
【问题描述】:

我有一个名为 $aFilter 的数组,如下所示(print_r($aFilter); 的输出):

目前只显示一个内部数组元素,但它可以包含许多这样的元素。所以考虑有多个内部数组元素的情况。

Array(    
          [0] => Array(            
            [filter_id] => 84            
            [user_id] => 984            
            [item_id] => 244            
            [type_id] => user        
            [feed_type] => a:10:{s:5:\"pages\";i:1;s:5:\"photo\";i:1;s:4:\"link\";i:1;s:5:\"event\";i:1;s:6:
\"friend\";i:1;s:11:\"user_status\";i:1;s:4:\"poll\";i:1;s:4:\"quiz\";i:1;s:6:\"market\";i:1;s:4:\"apps
\";i:1;}            
            [get_noti] => 0            
            [time_stamp] => 1432271245        
          )
        )

我想要以下所需的数组:

Array(    
          [0] => Array(            
            [filter_id] => 84            
            [user_id] => 984            
            [item_id] => 244            
            [type_id] => user        
            [feed_type] =>             
            [get_noti] => 0            
            [time_stamp] => 1432271245        
          )
        )

所以我尝试了以下代码,但它在print_r($aFilter); 上返回了相同的数组

$aFilter['feed_type'] = '';

为什么会这样?有人可以帮我解决我的问题吗?

谢谢。

【问题讨论】:

  • 你不想要那个键或者你需要它为空?
  • @sgtBOSE :我希望密钥存在,但它不应包含任何内容。键 ['feed_type'] 中的当前内容应从所有此类内部数组元素中清空。

标签: php arrays multidimensional-array associative-array key-value


【解决方案1】:

你可以这样做

foreach($aFilter as $aFilterRow)
{
    $aFilterRow['feed_type'] = "";
}

【讨论】:

  • 因为它是一个关联数组。如果它只有一行,您可以直接使用 $aFilter[0]['feed_type'] = "";
【解决方案2】:

给它设置null -

$aFilter[0]['feed_type'] = null; // You can set '' this also but would prefer null

更新

如果你有多个内部数组 -

array_walk ( $aFilter, function (&$key) { $key["feed_type"] = null; } );

【讨论】:

  • 但是如果有多个这样的内部数组元素呢?您的代码仅适用于第一个内部数组元素。
  • 然后你必须循环遍历它。这只是 OP 条件的解决方案。
【解决方案3】:

你的数组是二维数组

所以像下面的例子一样使用:

$aFilter[0]['feed_type'] = '';

已编辑

foreach($aFilter as $aFilt)
{
    $aFilt['feed_type'] = '';
}

【讨论】:

  • 但是如果有多个这样的内部数组元素呢?您的代码仅适用于第一个内部数组元素。
【解决方案4】:

array_walk 应该可以帮助您。试试这个:

function removeFeedType(&$arr)
{
    $arr['feed_type'] = null;
}
array_walk($aField, 'removeFeedType');

【讨论】:

    【解决方案5】:

    这样就可以了:

    array_walk( $aFilter, function(&$var){
        $var['feed_type'] = '';
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-10
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多