Jump to content

Recommended Posts

I can't figure out what's wrong with this. The program works, but the deduplication doesn't work. The error I get is :

Warning: in_array() [function.in-array]: Wrong datatype for second argument in line 67.

 

I bolded line 67 below, which is an if (in_array   ) statement.

in_array wants an array for the second argument, which I have, so don't see the problem. Any suggestions?

TIA
----------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Song Organizer</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Song Organizer</h1>
<?php
    // handle parameters in the URL
    if (isset($_GET['action']))
    {
        if ((file_exists("SongOrganizer/songs.txt")) && (filesize("SongOrganizer/songs.txt") != 0))
        {
            $SongArray = file("SongOrganizer/songs.txt");
            
            // menu for Deduplication, Sort, Shuffle
            switch ($_GET['action'])
            {
                case    'Remove Duplicates':
                    $SongArray = array_unique($SongArray);
                    $SongArray = array_values($SongArray);
                    break;
                case    'Sort Ascending':
                    sort($SongArray);
                    break;
                case    'Shuffle':
                    shuffle($SongArray);
                    break;
            } // end of switch statement
            
            // save the song list after it has been modified
            if (count($SongArray) > 0)
            {
                $NewSongs = implode($SongArray);
                $SongStore = fopen("SongOrganizer/songs.txt", "wb");
                if ($SongStore === false)
                    echo "There was an error updating the song file\n";
                else
                {
                    fwrite($SongStore, $NewSongs);
                    fclose($SongStore);
                }
            }
            else
                unlink("SongOrganizer/songs.txt");
        }
    }
    
    //  read song file data into the $ExistingSongs array
    if (isset($_POST['submit']))
    {
        $SongToAdd = stripslashes($_POST['SongName']) . "\n";
        $ExistingSongs = array();
        if (file_exists("SongOrganizer/songs.txt") && filesize("SongOrganizer/songs.txt") > 0)
        {
            $ExistingSongs = file("SongOrganizer/songs.txt");
        }
    }
    
    // check to see if the song name entered is already in the song list

// this is where it has a problem.
    if (in_array($SongToAdd, $ExistingSongs))

    {
        echo "<p>The song you entered already exists!<br />\n";
        echo "Your song was not added to the list.</p>";
    }
    // add new song to the list file
    else
    {
        $SongFile = fopen("SongOrganizer/songs.txt", "ab");
        if ($SongFile === false)
            echo "There was an error saving your message!\n";
        else
        {
            fwrite($SongFile, $SongToAdd);
            fclose($SongFile);
            echo "Your song has been added to the list.\n";
        }
    }
    
    // display the song list, or empty message if song list is empty
    if ((!file_exists("SongOrganizer/songs.txt")) || (filesize("SongOrganizer/songs.txt") == 0))
        echo "<p>There are no songs in the list.</p>\n";
    else
    {
        $SongArray = file("SongOrganizer/songs.txt");
        echo "<table border=\"1\" width=\"100%\" style=\"background-color:lightgray\">\n";
        foreach ($SongArray as $Song)
        {
            echo "<tr>\n";
            echo "<td>" . htmlentities($Song) . "</td>";
            echo "</tr>\n";
        }
        echo "</table>";
    }
?>

<!-- Show hyperlinks for the three functions in the switch statement (Sort, Remove Dups, Shuffle) -->
<p>
    <a href="SongOrganizer.php?action=Sort%20Ascending">SortSong List</a><br />
    <a href="SongOrganizer.php?action=Remove%20Duplicates">Remove Duplicate Songs</a><br />
    <a href="SongOrganizer.php?action=Shuffle">Shuffle Song List</a><br />
</p>

<!--  web form for entering new song names into the song list -->
<form action="SongOrganizer.php" method="post">
    <p>Add a New Song</p>
    <p>Song Name: <input type="text" name="SongName" /></p>
    <p><input type="submit" name="submit" value="Add Song to List" />
    <input type="reset" name="reset" value="Reset Song Name" /></p>
</form>

</body>
</html>

Link to comment
https://forums.phpfreaks.com/topic/276410-in_array-parameters/
Share on other sites

Thanks for the reply. I just tried moving the in_array stuff into that block and it didn't work. In fact, I couldn't add new songs, so that breaks something else.

 

I think the submit button is working okay since when I add a new song name and click submit it does add it to the list. And my sort and shuffle buttons work. Everything works except the deduplication.

Link to comment
https://forums.phpfreaks.com/topic/276410-in_array-parameters/#findComment-1422403
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.