0

ある配列から別の配列にコピーしようとしていますが、一意の値のみです。for ループを使用し、デバッグすると 10 個すべての青が表示されますが、for ループの後、最後の 2 つの値がなくなります。

「forループ」中に各配列要素をデバッグしましたが、10要素すべてが表示されているので問題ないようです。問題は for ループの後で始まります。たとえば、9 番目の要素を印刷したい場合、それは印刷されません。つまり、emty が表示されます。

何が問題になる可能性がありますか?

PS> array_unique() を試しましたが、同じ出力なので、そうではありません。

これが私のコードです:

    <?php

session_start();
error_reporting(E_ALL ^ E_NOTICE); //to remove annoying notices

include 'connectDB.php';

$queryISBN = mysql_query("SELECT * FROM booksread");
$numrows = mysql_num_rows($queryISBN);
if($numrows!=0)
{   
    $isbn_array = array();
    while($row = mysql_fetch_assoc($queryISBN))
    {
        $isbn_array[]=$row['ISBN'];
    }

    $isbn_unique = array();

    for ($i=0;$i<count($isbn_array );$i++)
    {
        if(!in_array($isbn_array[$i],$isbn_unique ))
        {
            $isbn_unique[$i]=$isbn_array[$i];
            echo $isbn_unique[$i]."  ---- ";
        }
    }
}
echo "<h1>Select books you would like to view</h1>";
$submit = $_POST['submit'];

if(isset($_POST['selectedbooks']))
    {
        $checked = $_POST['selectedbooks'];
    }

if($submit)
    {
        if(!isset($checked))
        {
            echo "You must check at least one book.";
        }
        else 
        {
            $_SESSION['checked'] = $checked;
            header("location: view_entries_results.php");
        }
    }

?>

<html>
<body>

<form action="view_entries.php" method="POST">
<table>
<table border="1">
<th>ISBN<th>Title<th>Author<th>Select</th>

<?php
    echo "Arr size: ".count($isbn_unique )." </br>";
    echo "8: ".$isbn_unique[7]."</br>";
    for ($j=0;$j<count($isbn_unique );$j++)
    {
        $curElement = $isbn_unique[$j];
        echo "Cur el: ".$curElement;
        $queryBook = mysql_query("SELECT * from book WHERE ISBN='$curElement'");

    while ($row = mysql_fetch_assoc($queryBook))
        {   
            $ISBN = $row['ISBN'];
            $title = $row['Title'];
            $author = $row['Authorname'];
        }
        ?>

    <tr>
        <td><?php echo $ISBN; ?></td>
        <td><?php echo $title; ?></td>
        <td><?php echo $author; ?></td>
        <td><input type="checkbox" name="selectedbooks[]" value="<?php echo $ISBN; ?>"/>
    </tr>

   <?php }  ?>

</table>
<p><input type="submit" name="submit" value="Add Entry" /></p>
</form>


</body>
</html>
4

2 に答える 2

1

おもう

if(!in_array($isbn_array[$i],$isbn_unique ))
{
    $isbn_unique[$i] = $isbn_array[$i];
    echo $isbn_unique[$i]."  ---- ";
}

する必要があります

if(!in_array($isbn_array[$i],$isbn_unique ))
{
    $isbn_unique[] = $isbn_array[$i];
    echo $isbn_array[$i]."  ---- ";
}
于 2013-05-24T05:13:26.963 に答える
0

$isbn_array に重複した値があると思うので、そのスキップ キーは既に配列にあるため、$isbn_unique のサイズは $isbn_array とは異なります。その上でデバッグしてみてください。

于 2013-05-24T05:13:36.610 に答える