【问题标题】:Remove Key of One Array of Not Have in Other Array [closed]删除其他数组中没有的一个数组的键[关闭]
【发布时间】:2011-08-11 14:06:24
【问题描述】:

我必须删除一个数组的键 Of Not have in another array, like

    /**
     * I Have This Array, With Keys
     * Name, Lastname, Date
     */
    $Array = Array( 'name' => 'Mike', 'lastname' => 'Griggs', 'date' => strftime( '%A %c' ) );
    /**
     * And The Split , Make This One Array
     */
    $Fields = 'name, lastname';
    foreach( split( ',', str_replace( ' ', NULL, $Fields ) ) as $Index => $Field ):
             if(!array_key_exists( $Field, split( ',', str_replace( ' ', NULL, $Fields )))):
                   unset( $Array[$Field] );
             endif;
    endforeach;
    print_r( $Array );
    /**
     * i Have to Remove The Elements of $Array
     * That Not Have in $Fields, In This Case, Unset 'date' From $array
     */

但要重新调整数组中的日期字段 我需要从数组中取消设置 $Fields 中没有的键, 如果数组中没有名称,则仅返回 LastName ..

感谢[]的

【问题讨论】:

  • 为什么每个单词都大写?
  • 对不起,不懂你的问题=)
  • 我试图从 $Fields 中没有的 $Array 中删除键

标签: php arrays key unset


【解决方案1】:

你应该考虑用正确的英语来表达你的问题。主要是因为用户要么批评它而不是回答它,要么完全忽略它。

话虽如此,我假设您有一个数组和一个带有逗号分隔索引的字符串。然后你想通过删除额外的数据来“清理”你的数组。

下面是一个示例,说明您可以如何做到这一点:

<?php
$array = Array( 'name' => 'Mike', 'lastname' => 'Griggs', 'date' => strftime( '%A %c' ) );
$fields = 'name, lastname';

function removeIndex($a,$f){
    $f=explode(',',$f);
    $b=array();
    foreach($f as $v){
        $v=trim($v);// only need if you have extra whitespace
        $b[$v]=$a[$v];
    }
    return $b;
}

$array=removeIndex($array,$fields);
print_r($array);
?>

【讨论】:

  • 停止每个单词的大写。我很高兴它有效。
  • 如何“取消设置”该字段?
  • 哪个字段来自哪里?你刚才说它有效。
  • 是的,但不要从数组中取消设置字段:p
  • .......我不明白你想要什么。您无需取消任何设置。不要把每个单词都大写。
猜你喜欢
  • 1970-01-01
  • 2019-08-08
  • 2010-12-17
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
相关资源
最近更新 更多