0

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

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'] );
                }
            }
        }

关于我做错了什么的任何想法?提前致谢。

4

3 回答 3

1

尝试这个:

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

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


即使在您的示例中,您也尝试从中删除'LASTNAME'$s不是从其子项中删除,但是无论如何,请尝试我的答案,它应该对您有用;)

于 2013-03-17T00:34:39.410 回答
0

您正在从错误的数组中恢复。

为每个循环存储当前密钥将有助于:

foreach($s as $key1 => $object) {
    foreach($object as $key2=>$value) {
        if ($key2 == "LASTNAME") {
            unset( $s[$key1][$key2] );
        }
    }
}
于 2013-03-17T00:34:30.577 回答
0
<?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>';
?>
于 2013-03-17T00:37:03.837 回答