Php,从一个数组中删除密钥

时间:2016-04-18 07:32:35

标签: php arrays

我想从数组中删除一个项目。我可以这样写:

$item = array(
    'id' => 1
    'name' => 'name'
);

$item2 = $item;
unset($item2['id']);
$names[] = $item2;

但最后3行有点“麻烦”,所以不优雅。可以在不创建$ item2的情况下解决吗?类似的东西:

$item = array(
    'id' => 1
    'name' => 'name'
);

$names[] = array_ignore_index('id', $item);

4 个答案:

答案 0 :(得分:3)

从您的代码中,我可以看到您正在尝试从项目数组中获取名称[]。针对此特定情况的一种可能的简单解决方案:

例如,如果你有:

$items = array(
    array(
        //this is your item 1
        'id' => 1,
        'name' => 'name1'
    ),
    array(
        //this is item 2
        'id' => 2,
        'name' => 'name2'
    )
);

并且您想要检索名称数组中的名称。

你可以这样做:

$names = array_column($items, 'name');

它将返回:

Array
(
    [0] => "name1"
    [1] => "name2"
)

请注意,此解决方案最适合此特定情况,可能不符合您当前的情况。

答案 1 :(得分:1)

function array_ignore_index($id,$item){ ///function 
     unset($item[$id]);
     return $item;
   }
$a=array('id'=>1,
     'name'=>'name');
$b=array_ignore_index('name',$a);
echo $b['name']; //create error id is not present

以下是所需操作的代码..

答案 2 :(得分:1)

最短的开箱即用解决方案是创建数组键的差异:

$names[] = array_diff_key($item, array_flip(['id']));

请参阅http://php.net/array_diff_key

答案 3 :(得分:0)

您可以使用unset array column

代码是

unset($item['id']);

测试它

print_r($item);