【问题标题】:Remove elements of one array if it is found in another [duplicate]如果在另一个数组中找到它,则删除一个数组的元素[重复]
【发布时间】:2012-05-22 07:50:05
【问题描述】:

可能重复:
Remove item from array if it exists in a 'disallowed words' array

我有一个客户端将发送的动态字符串,我想从中创建逗号分隔的标签:

$subject = "Warmly little in before cousin as sussex and an entire set Blessing it ladyship.";
print_r($tags = explode(" ", strtolower($subject)));

然而,我想删除一组特定的词(例如定冠词),但如果它在分解数组中,我想删除该词的键和值:

$definite_articles = array('the','this','then','there','from','for','to','as','and','or','is','was','be','can','could','would','isn\'t','wasn\'t', 'until','should','give','has','have','are','some','it','in','if','so','of','on','at','an','who','what','when','where','why','we','been','maybe','further');

如果$definite_article 数组中的这些单词之一在$tags 数组中,则删除该单词的键和值,新数组将取出这些单词。我将让array_rand 使用这个数组来随机选择一组单词。我已经尝试了很多事情来达到我的结果,但到目前为止还没有。有人可以帮我解决这个问题吗?

【问题讨论】:

标签: php arrays


【解决方案1】:

您正在寻找array_diff:

$subject = "Warmly little in before cousin as sussex...";
$tags = explode(" ", strtolower($subject));

$definite_articles = array('the','this','then','there','from','for','to','as');

$tags = array_diff($tags, $definite_articles);
print_r($tags);

See it in action.

【讨论】:

    【解决方案2】:

    对于array_diff() 来说,这听起来很容易。

    array <strong>array_diff</strong> ( array $array1 , array $array2 [, array $... ] )

    比较 array1array2 并返回差值。

    这基本上意味着它将在删除array2 中存在的所有值后返回array1

    【讨论】:

    • array_diff() 将保留 [array1] 的原始数组键,这就是使此陈述成立的原因。你可能想要也可能不想要这个,但这只是需要注意的事情。
    • array_diff() 将保留 [array1] 的原始数组键 - 只需将其包装在 array_values 中 - 这将重置新的数组键:示例:$new_array=array_values(array_diff($array1, $array2) );
    猜你喜欢
    • 2011-05-19
    • 2019-02-24
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    相关资源
    最近更新 更多