组合array_push和array_flip

时间:2012-06-02 11:20:51

标签: php arrays

我在一个数组中存储单词。每次我从表单中添加新单词时,它都会将它们附加到现有数组中。

我想确保单词存储在数组的键中,而不是值。我只是第一次使用array_flip来做,但是当我添加新单词时,它们会被存储为值。

我确信这很简单,但是如何确保数组始终被命令将单词存储为键?!提前谢谢......

以下是我的代码:$_SESSION['words']是现有的单词数组,$_POST['additions']是要添加的新传入单词:

if (isset($_POST['additions']) === true) {

    // do cleanup
    $additions = explode(",", $_POST['additions']); // create array from $_POST['additions']
    $additions = array_map('trim', $additions); // remove whitespace
    $additions = array_filter($additions); // remove blank array elements       
    $additions = preg_replace("/,(?![^,]*,)/",'',$additions); // remove stray characters

    foreach($additions as $key => $value) {     
        // append content to $_SESSION['words']  
        array_push($_SESSION['words'], $value);     
    }   

    // swap all the array values with the array keys
    $_SESSION['words'] = array_flip($_SESSION['words']);    

    // swap keys with values
    foreach($_SESSION['words'] as $key => $value) {         
        $key = $value;
        $value = "";
    }

1 个答案:

答案 0 :(得分:2)

你走了:

foreach($additions as $key => $value) {     
    // append content to $_SESSION['words']  
    $_SESSION['words'][$value]=count($_SESSION['words'])+1;     
}   

无需翻转;用这段代码替换第一个foreach循环,并删除它后的所有内容。