1

インデックス付き配列から値を取得しようとしていますが、変数をインデックス (配列内のインデックスと同じ) として使用すると、値が表示されません。Undefined Indexエラーが発生します。なぜこうなった?誰か知っていますか?ありがとう!

次のコードがあります。

$bookarray = array();
                $books = mysqli_query($db, "SELECT * FROM books");
                while($row = mysqli_fetch_assoc($books)){
                    $bookarray[$row['bookID']] = array(
                        'title' => $row['title'],
                        'author' => $row['author'],
                        'price' => $row['price']
                    );
                }
                echo"<hr>";
                print_r($bookarray);
                echo"<hr>";
                echo $bookarray[5]['title']."<br />";


                foreach($_SESSION['cart'] as $cartedbook){
                    echo $cartedbook;
                    echo $bookarray[$cartedbook]['title'];
                    echo "<br />";
                }

これは出力です:

書籍


Array
(
[1] => Array
    (
        [title] => Java 2 for Pro Deelopers
        [author] => Michael Morgan
        [price] => 34.99
    )

[2] => Array
    (
        [title] => Installing XAMPP
        [author] => Thomas Down
        [price] => 24.99
    )

[3] => Array
    (
        [title] => Alice Through the Looking Glass
        [author] => Louis Carroll
        [price] => 72.35
    )

[4] => Array
    (
        [title] => Quantum Mechanics in 124 Hours
        [author] => Neils Bohr
        [price] => 24.99
    )

[5] => Array
    (
        [title] => PHP For Fun And Profit
        [author] => Thomas Shenk
        [price] => 49.99
    )

[28] => Array
    (
        [title] => Test
        [author] => Eric Gross
        [price] => 100.00
    )

)


楽しみと利益のための PHP
5
通知: 未定義のインデックス: C:\xampp\htdocs\FinalProject\cart.phpの52行目に 5


3
通知: 未定義のインデックス: 52行目のC:\xampp\htdocs\FinalProject\cart.phpの 3

タイトル 著者価格

4

2 に答える 2

1

データベースでは整数であっても、mysql クエリの結果は文字列です。これにより$bookarray、おそらくそれに対して使用しようとしている数値インデックスではなく、数値文字列によって関連付けられます。

その ID を int としてキャストしてみてください。

$bookarray[(int) $row['bookID']] = array(
于 2011-06-04T23:53:46.550 に答える
0

あなたの質問のソースを見ると、数字の前に改行文字があるようです (したがって、論理的に見つからない"\n5"の代わりになります)、これを確認できますか? 利回り5とは何ですか?var_dump($cartedbook);

于 2011-06-04T23:55:27.453 に答える