1

次のコードはなぜですか:

if (isset($_GET['trainType']) && isset($_GET['onTime']) && isset($_GET['gotSeat'])) {
    $train[0]['trainType'] = $_GET['trainType'];
    $train[0]['trainType']['onTime'] = $_GET['onTime'];
    $train[0]['trainType']['gotSeat'] = $_GET['gotSeat'];   
    echo '<pre>';
    print_r($train);
    echo '</pre>';
}

次の配列を返します。

Array
(
    [0] => Array
        (
            [trainType] => tLine
        )

)

私は当初、これにもっと似たものを返すと思っていました:

Array
(
    [0] => Array
        (
            [trainType] => 'passenger'
            Array =>
                (
                    [onTime] => true
                    [gotSeat] => true
                )

        )

)

私がやろうとしていることを達成するために何をすべきかについてのガイダンスはありますか? 私のコードが私がやろうとしていることを明らかにすることを願っています。

4

2 に答える 2

1

この行はtrainType文字列値に設定されます:

$train[0]['trainType'] = 'hello';

次に、これらの行が実際に文字置換に使用されますが、少しひねりを加えています。

$train[0]['trainType']['onTime'] = 'foo';
$train[0]['trainType']['gotSeat'] = 'bar';

onTimeとの両方gotSeatが返され0(文字列を操作しているため)、最初の文字がfthenに置き換えられbます。

したがってprint_r($train)、以下を返します。

(
    [0] => Array
        (
            [trainType] => bello
        )

)

このデータをフォーマットする方法は次のとおりです。

// define our list of trains
$train = array();

// create a new train
$new = new stdClass;
$new->type = 'a';
$new->onTime = 'b';
$new->gotSeat = 'c';

// add the new train to our list
$train[] = $new;

の結果print_r($trains):

Array
(
    [0] => stdClass Object
        (
            [type] => a
            [onTime] => b
            [gotSeat] => c
        )

)

このデータへのアクセス:

echo $trains[0]->type; // returns 'a'
echo $trains[0]->onTime; // returns 'b'
echo $trains[0]->gotSeat; // returns 'c'
于 2012-10-23T05:39:45.363 に答える
0

暗黙的にキー = 0 を設定 (または必要) している

array (
  "onTime" => true,
  "gotSeat" => true
)

したがって、代わりにこれを行う必要があります。

if (isset($_GET['trainType']) && isset($_GET['onTime']) && isset($_GET['gotSeat'])) {
    $train[0]['trainType'] = $_GET['trainType'];
    $train[0][0]['onTime'] = $_GET['onTime'];
    $train[0][0]['gotSeat'] = $_GET['gotSeat'];
    echo '<pre>';
    print_r($train);
    echo '</pre>';
}

私がしたことは、コード内の間違った を変更したことだけ$train[0]['trainType']['onTime']$train[0][0]['trainType']あり、同様にgotSeat.

または、おそらく次のように、新しいキーを定義できます。$train[0]['booking']['onTime'] = ...

于 2012-10-23T06:07:07.657 に答える