0

単語を配列に格納しています。フォームから新しい単語を追加するたびに、既存の配列に追加されます。

単語が値ではなく配列のキーに格納されていることを確認したいと思います。初めて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 = "";
    }
4

1 に答える 1

2

どうぞ:

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

ひっくり返す必要はありません。最初のforeachループをこのコードに置き換え、その後のすべてを削除します。

于 2012-06-02T11:26:01.290 に答える