2

PHP 配列に関する私の知識は限られています。PHP Arrays - Manualを読みましたが、正直に理解するのに十分な価値のある説明ではありませんでした。

私はif{} else{}声明で次のことを述べています。else{}

// Set up an array for the items

while($row = mysqli_fetch_array($result))
{
   $source = $row['source'];
}

$items = array(
   "id" => $id,
   "source" => $source,
);

$_SESSION['items'] = $items;

次のアイテムがあるとします。

Item A with an ID of 1 and source of foo
Item B with an ID of 2 and source of boo
Item C with an ID of 3 and source of goo

この関数が で呼び出されたitem A場合、配列は の id1とソースで作成さfooれ、配列に配置されるのはそれだけです。そして、配列は次のようにダンプされます。

array(2) { ["id"]=> string(2) "25" ["source"]=> string(64) "https://www.alphahq.org/shop/views/assets/images/items/item2.jpg" }

設定時に関数が再度呼び出された場合item B、配列はitem B 正しい変数に変更されますか?

同じ配列に とを追加して、それらを個別の項目として定義するにはどうすればよいでしょうitem Aitem B?

では、基本的にどうすれば次のことができますか?

array {
  item A {
    id => 1
    source => foo
  }
  item B {
    id => 2
    source => boo
  }
}

アイテムが追加されると、配列を構築するだけです。セッションで配列を保存していますが、関数が呼び出されるたびに配列を取得して追加するのに役立ちますか?

追加のヘルプとして、参照用に私の完全なshopping-functions.phpファイルを以下に示します。

<?php
    session_start();

    require('../../config/database-connect.php');

    // Start a new order for a customer
    $action = $_GET['action'];
    $id     = $_GET['id'];

    // First make sure the action is not blank
    if ($action == '') {

        echo 'Please select an action';
    }

    if ($action == 'add') {

        // Check if the id matches one in the database
        $result = mysqli_query($con,"SELECT id, source FROM items WHERE id='$id'");

        if (mysqli_num_rows($result) == 0) {

            echo 'That id is not valid!';
        }
        else {
            // Set up an array for the items

            while($row = mysqli_fetch_array($result))
            {
                $source = $row['source'];
            }

            $items = array(
                "id" => $id,
                "source" => $source,
            );

            var_dump($items);

            $_SESSION['items'] = $items;
        }
    }
?>
4

4 に答える 4

0

この場合

// Based on pr1nc3's answer
$_SESSION['items'] = array(); // Create a new array

foreach($myResult as $row)
    $_SESSION['items'][] = $row;

これ[]はここでの魔法です: PHP に「前に識別された配列を取り、[]この項目をそれにプッシュします」と言います - 実際、これは本質的にarray_pushメソッドの省略形です:

$a = $b = array();
$c = array(1, 2, 3, 4, 5, 6);

foreach($c as $value) {
    $a[] = $value;
    array_push($b, $value);
}

上記の後、呼び出しで同じように見え$aます。$bvar_dump

于 2013-11-10T06:33:51.290 に答える
0

最初にこれを行います:

$items = []; // It's a good practice to initialize first
while($row = mysqli_fetch_array($result))
{
    $items[] = [ // Append to end of array
       "id" => $id,
       "source" => $row['source'], // Key with source
    ];
}
 // Here if you var_dump($items) you will see the result
于 2013-11-10T06:24:43.467 に答える
0
while($row = mysqli_fetch_array($result))
{
    $source = $row['source'];
    $items = array(
        "id"     => $id,
        "source" => $source,
    );
    $_SESSION['items'][] = $items;
}

Multi - dimensional array

$_SESSION['items'];おそらく、多次元配列にする別の配列を格納したいと思うでしょう 。

[]次に供給された値を次に使用可能なキーにスタックします。

これは、 の最初の値$itemが に格納され$_SESSION['items'][0]、 の 2 番目の値が$itemに格納されるということを意味$_SESSION['items'][1]します。

于 2013-11-10T06:25:54.577 に答える