我想从数组中删除一个项目。我可以这样写:
$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);
答案 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']));
答案 3 :(得分:0)