Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php,从数组中删除密钥_Php_Arrays - Fatal编程技术网

Php,从数组中删除密钥

Php,从数组中删除密钥,php,arrays,Php,Arrays,我想从数组中删除一个项。我可以这样写: $item = array( 'id' => 1 'name' => 'name' ); $item2 = $item; unset($item2['id']); $names[] = $item2; 但最后3行有点“笨重”,秀恩优雅。不创建$项目2就可以解决这个问题吗?比如: $item = array( 'id' => 1 'name' => 'name' ); $names[] = arr

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

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

$item2 = $item;
unset($item2['id']);
$names[] = $item2;
但最后3行有点“笨重”,秀恩优雅。不创建$
项目2
就可以解决这个问题吗?比如:

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

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

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

例如,如果您有:

$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"
)

请注意,此解决方案最适合此特定场景,它可能不适合您当前的场景,具体取决于。

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

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
例如,如果您有:

$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"
)
请注意,此解决方案最适合此特定场景,它可能不适合您当前的场景,具体取决于

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
以下是所需操作的代码


以下是所需操作的代码。

最短的现成解决方案是创建阵列键的差异:

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

请参阅。

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

$names[] = array_diff_key($item, array_flip(['id']));
请参阅。

您可以使用

代码是

unset($item['id']);
测试它

print_r($item);
你可以用

代码是

unset($item['id']);
测试它

print_r($item);

您可以取消设置($item['id']);取消设置后,您可以使用array_值($array)重新编制索引。@deceze:是的,“在犯罪或做错事或可耻的事情时”…?)您可以取消设置($item['id']);取消设置后,您可以使用array_值($array)重新编制索引。@deceze:是的,“在犯罪或做错事或可耻的事情时”…?)