【问题标题】:php - How to unset array element in this conditionphp - 如何在这种情况下取​​消设置数组元素
【发布时间】:2014-02-18 17:41:13
【问题描述】:

我的数组如下所示:

Array ( 
    [0] => Array ( 
        [value] => Array (
            [source] => vimeo
            [url] => https://vimeo.com/000000
        ) 
        [type] => videos 
    )
    [2] => Array ( 
        [value] => 62 
        [type] => images 
    ) 
)

我想用 type => images 取消设置数组 id

我试过了:

$key = array_search('images',$slides); 
unset($slides[$key]); 

它只删除数组中的第一项!!!

更新:

毕竟我是这样做的:

foreach ( $slides as $slide => $value) {
    if ($display_mode == 'images' &&  $value['type'] == 'videos') {
        unset($slides[$slide]);
    } elseif ($display_mode == 'videos' &&  $value['type'] == 'images') {
        unset($slides[$slide]); 
    }  
}

谢谢。

【问题讨论】:

    标签: php multidimensional-array unset


    【解决方案1】:

    如果没有找到$needlearray_search 返回 false。 false 在用作整数时转换为 0。您可能需要为您的用例考虑 array_filter

    $array = array(...);
    
    $array = array_filter($array, function($item) { return in_array('images', $item); });
    

    【讨论】:

      【解决方案2】:
      foreach ($slides as $key => $slide) {
          if (in_array('images', $slide)) unset($slides[$key]);
      }
      

      【讨论】:

      • eBrian -- 你需要使用对 $slide 的引用才能工作。否则每次迭代后更改将被放弃。否则,foreach 是完全可行的 =)
      • @KevinNielsen,不正确。请注意,我直接在数组中取消设置,而不是尝试取消设置 $slide。最终,它的作用是 unset($slides[2])。
      猜你喜欢
      • 2014-03-21
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      相关资源
      最近更新 更多