【解決方法】array_push はインデックス 0 にのみプッシュします


数値入力フィールドと送信ボタンがあります。 タスク: ボタンをクリックすると、数値が $a 配列にプッシュされます。 数値は $weight です。

しかし、次の番号をプッシュしたい場合は、インデックス 0 の番号を置き換えます。

なんで?

私が試したこと:

<pre lang="PHP"><!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Weight loss app</title>
</head>

<body>
    <?php
    $a = [];
    if (isset($_POST['submit'])) {
        $weight = $_POST['weight'];
        array_push($a, $weight);
    }
    print_r($a);
    ?>
    <form action="" method="post">
        <input type="number" name="weight" id="weight">
        <button type="submit" name="submit">Upload weight</button>
    </form>
</body>

</html>

解決策 1

PHP 変数の値は、リクエスト間で保持されません。 フォームを送信するたびに空の配列を作成し、それに値を 1 つ追加します。 以前に送信した値は記憶されません。

以前の値を保持したい場合は、フォーム内に隠しフィールドとして追加する必要があります。

PHP
<?php
$a = [];
if (isset($_POST['submit'])) {
    $a = $_POST['weight'];
}
print_r($a);
?>
<form action="" method="post">
    <?php
    foreach ($a as $weight) {
        echo '<input type="hidden" name="weight[]" value="' . $weight . '">';
    }
    ?>
    <input type="number" name="weight[]" id="weight">
    <button type="submit" name="submit">Upload weight</button>
</form>

コメント

タイトルとURLをコピーしました