【问题标题】:Remove items from an array [duplicate]从数组中删除项目[重复]
【发布时间】:2013-03-17 00:29:19
【问题描述】:

我有一个格式如下的数组:

Array
(
    [0] => Array
        (
            [id] => 1
            [LASTNAME] => Name
            [FIRSTNAME] => Name
    )
    [1] => Array
        (
            [id] => 2
            [LASTNAME] => Name
            [FIRSTNAME] => Name
    )

等等。我希望从数组的每个部分中删除姓氏和其他项目。

我尝试了以下代码,但无济于事。

foreach($s as $key => $object) {

    foreach($object as $key=>$value) {

            if ($key == "LASTNAME") {
                unset( $s['LASTNAME'] );
                }
            }
        }

关于我做错了什么有什么想法吗?提前致谢。

【问题讨论】:

  • 内部循环正在覆盖外部的$key变量。
  • 嗯嗯!!那解决了它。感谢上帝,我在办公桌前,没有开车。这么愚蠢可能会给我造成严重的伤害:-)
  • 谢谢。我很感激。

标签: php arrays array-unset


【解决方案1】:

试试这个:

foreach ($s as &$object) {
    unset($object['LASTNAME']);
}

您的问题是您正在对副本进行操作,& 将为您提供参考,正如我的示例中所示,您不必遍历数组来检查里面是否有特定的键,只需删除它 - unset 不存在时不会出现任何错误。


即使在您的示例中,您也尝试从 $s 中删除 'LASTNAME' 而不是它的子项,但无论如何,只要尝试我的答案,它应该适合您;)

【讨论】:

    【解决方案2】:

    您从错误的数组中取消设置。

    为每个循环存储当前密钥会有所帮助:

    foreach($s as $key1 => $object) {
        foreach($object as $key2=>$value) {
            if ($key2 == "LASTNAME") {
                unset( $s[$key1][$key2] );
            }
        }
    }
    

    【讨论】:

      【解决方案3】:
      <?php 
      $array = Array(
          0 => Array(
                  'id' => 1,
                  'LASTNAME' => 'Name',
                  'FIRSTNAME' => 'Name'
          ),
          1 => Array(
                  'id' => 2,
                  'LASTNAME' => 'Name',
                  'FIRSTNAME' => 'Name'
          )
      );
      
      foreach($array as $key=>$value){
          unset($array[$key]['LASTNAME']);
      }
      
      echo '<pre>',print_r($array),'</pre>';
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-29
        • 2011-06-19
        • 2020-11-06
        • 2021-01-18
        • 2016-07-30
        • 1970-01-01
        相关资源
        最近更新 更多