【问题标题】:Unset an array using php使用 php 取消设置数组
【发布时间】:2012-06-17 22:36:40
【问题描述】:

我有一个问题,比如我有一个多维数组,如果内部数组包含“编辑”,我想删除父数组 数组是这样的

[fields] => Array
    (
        [0] => Array
            (
                [header] => Array
                    (
                        [fieldName] => edit
                        [displayName] => Edit
                        [width] => 40
                        [group] => 0,1,2,3
                        [cssClass] => dgAssetsCentered
                    )

                [visibility] => Array
                    (
                        [showOnStart] => 1
                        [editable] => 
                    )

                [cell] => Array
                    (
                        [type] => link
                        [params] => Array
                            (
                                [label] => Edit
                            )

                    )

                [sort] => Array
                    (
                        [sortable] => 1
                    )

                [validator] => Array
                    (
                        [name] => 
                        [params] => 
                    )

            )

        [1] => Array
            (
                [header] => Array
                    (
                        [fieldName] => OFFERID
                        [displayName] => Offer Id
                        [group] => 0

我想删除数组 0,因为内部数组包含“编辑”我能够删除 [header] 数组无法删除 [0] 数组。请建议。

谢谢 亚历克斯。

【问题讨论】:

  • 能贴出删除header数组的代码吗?
  • unset($array["fields"][0]); 应该工作吗?
  • 不,它不起作用,而且它也是硬编码的,有时编辑可能在另一个位置
  • 也可以试试array_search()
  • “编辑”可以存在于任意键中吗?还是只在那个“displayName”中?为什么你不立即取消设置字段而不是用“编辑”填充它并在那里搜索它..

标签: php arrays unset


【解决方案1】:
foreach($fields as $key => $field)
{
  if(isset($field['header']['fieldName']) && $field['header']['fieldName'] == 'edit')
    unset($field[$key]);
}

更新: 另外,如果你想删除数组,如果任何元素等于“编辑”,试试这个算法:

foreach($fields AS $key => $array)
{
  foreach($array as $innered)
  {
    if(array_search('edit', $innered)) 
    {
      unset($fields[$key]);
      break;
    }
  }
}

【讨论】:

  • 以上是二维的,我们应该递归调用
【解决方案2】:

unset(fields); 将清除整个数组。

unset(fields[0]); 将清除字段数组中的元素 0

【讨论】:

  • 这很好用:)它将取消设置传入的任何变量。看看我的答案中的用法。
猜你喜欢
  • 2019-07-17
  • 2012-01-10
  • 2019-08-03
  • 2014-04-27
  • 1970-01-01
  • 2017-10-17
  • 2020-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多