首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试从包含"X“字符串的数组中删除值。

尝试从包含"X“字符串的数组中删除值。
EN

Stack Overflow用户
提问于 2014-06-19 14:28:52
回答 1查看 53关注 0票数 2

我目前正在制作一个系统,用户可以在这个系统中将东西发布到一个表中,该系统会自动添加一个“Day-”.date(“N”)到表上的字符串中,一旦一周后,我就会删除它。我已经完成了实现这个任务的流程--每当用户添加一个post时,它都会检查一个day.txt文件,看看当天是否是不同的一天,如果是的话,它将运行以下函数:

代码语言:javascript
复制
// The function is quite simple in theory:
// Load the two lists as a string, convert to array
// Send code out removing all posts with a certain day.
function removeOldPosts(){
    $newday = ':Day-'.date('N');
// I realise the below two lines are unefficient, I'll consolidate them later
    $currentPosts = file_get_contents('list.txt');
    $posts = explode(" ", $currentPosts); 
    while(($key = array_search($newday, $posts)) !== false){
        unset($posts[$key]);
        echo 'Unset a value: '.$key.'<br>';
    }
    echo ($posts); // Testing variables in array
    $newPosts = implode(" ", $posts);
    echo $newPosts;
    file_put_contents('list.txt', $newPosts);
    return;
}

然而,“回声”仍然显示为包含我要删除的值.我想知道是否有人在我的代码中发现了错误--我假设while语句有问题,但这是我第一次使用这样的语句,所以我不完全确定如何有效地找到包含当前日期的所有值,然后删除它们。

对于"list.txt“内容,如下所示

代码语言:javascript
复制
1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:1101:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 14:47:13

如果要清理数组,请尝试使用过滤器。此示例将删除所有带有“:Day-4”子字符串的条目。

代码语言:javascript
复制
$currentPosts = '1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-5:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-6:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-3:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-5:8JX-UKR8:8JX-UKR8:Spirit:110 1:Spitfire:Day-4:8JX-UKR8:8JX-UKR8:Spirit:110';

$posts = explode( " ", $currentPosts );     
$posts = array_filter( $posts, function( $item ) { 
    return strpos( $item, ':Day-4' ) === false; 
});

print_r( $posts );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24309068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档