3

PHPプログラミングをしてからしばらく経ちましたので、さびを取り除こうとしています。

このような連想配列構造を作成しようとしています。

[results]
     [total]
     [people]
         [name]
         [street]
         [city]
         [state]
         [zip]

Currently, I have this.

$people = array( 'name' => '',
                 'street' => '',
                 'city' => '',
                 'state' => '',
                 'zip' => );

$results = array('total' => 10, --set dynamically
                 'people' => $people );

したがって、私の頭の中では、while ループでデータを入力できる空の多次元配列を作成したいと考えています。

まず、これは適切な形式ですか? 私は近くにいるように感じますが、正しくありません。私が何をしているのかを理解するのに役立つかもしれません (以下に示します)。

だから私は言ったように、これをwhileループで埋めたいと思っています。これは基本的に私が今まで持っているものです。そして、これまでのところ、私は仕事に就くことができませんでした。

$i = 0;
while loop
{
   $results['people'][i][name] = 'XxXxX'
   $results['people'][i][street] = 'XxXxX'
   $results['people'][i][city] = 'XxXxX'
   $results['people'][i][state] = 'XxXxX'
   $results['people'][i][zip] = 'XxXxX'


 %i++;
}

私はこれをさまざまに組み合わせてみましたが、まだうまくいきません。問題があれば、この配列を取得して、JSON オブジェクトとしてブラウザーに送り返したいと思います。

初期化が間違っているのか、ループ内の配列の設定が間違っているのか、またはその両方なのかわかりません。

4

4 に答える 4

1

PHP 配列は、個別にインプレースでインスタンス化する必要があります。適切に説明する方法がわかりませんが、コードは次のようになります。

$results = array();
$results['total'] = $somevalue;
$results['people'] = array();

/*or:
$results = array(
  'total' => $somevalue,
  'people' => array()
);*/

$i = 0;
while($some_condition) {   //or: for( $i=0; $i<$something; $i++ ) {
   $results['people'][$i] = array();
   $results['people'][$i]['name']   = 'XxXxX';
   $results['people'][$i]['street'] = 'XxXxX';
   $results['people'][$i]['city']   = 'XxXxX';
   $results['people'][$i]['state']  = 'XxXxX';
   $results['people'][$i]['zip']    = 'XxXxX';

   /*or:
   $results['people'][$i] = array(
       'name'   => 'XxXxX',
       'street' => 'XxXxX',
       'city'   => 'XxXxX',
       'state'  => 'XxXxX',
       'zip'    => 'XxXxX',
   );*/

   $i++;
}

連想配列を使用している場合は、キー文字列を引用符で囲む必要があることに注意してください。また、整数インデックスを使用して連想配列にアクセスすることもできます。

于 2012-11-30T20:10:04.357 に答える
0

まず、すべてのキーに名前を付けて空の文字列を宣言するのではなく、名前の配列を作成しarray_fill_keysてそれらをキーに変換し、すべてのデフォルト値を指定することができます(ループでappend()を使用する必要がない限り、おそらくNULL代わりに使用する必要があります) 。whileループではなく、forループを使用しますが、必要に応じてwithを実行することもできます。''.=while $i < 10$i++whilefor

$people = array_fill_keys(array('name', 'street', 'city', 'state', 'zip'), '');

$results = array('total' => 10, 'people' => array());

for($i = 0; $i < $results['total']; $i++){
    $results['people'][$i]['name'] = 'XxXxX';
    $results['people'][$i]['street'] = 'XxXxX';
    $results['people'][$i]['city'] = 'XxXxX';
    $results['people'][$i]['state'] = 'XxXxX';
    $results['people'][$i]['zip'] = 'XxXxX';
}
于 2012-11-30T20:15:08.190 に答える
0

私が見るいくつかの問題があります。%i++1つ目は、の代わりに持っていることです$i++。後で、i代わりに参照します$i。次は while ループの中にあり、引用符を使用せずに名前、通りなどにアクセスしようとしています (これは、構成によっては警告が表示される場合と表示されない場合があります)。

これを使用してみてください:

$i = 0;
while(NEED SOME CONDITION HERE)
{
   $results['people'][$i] = array(); //Need to let PHP know this will be an array
   $results['people'][$i]['name'] = 'XxXxX'
   $results['people'][$i]['street'] = 'XxXxX'
   $results['people'][$i]['city'] = 'XxXxX'
   $results['people'][$i]['state'] = 'XxXxX'
   $results['people'][$i]['zip'] = 'XxXxX'


 $i++;
}
于 2012-11-30T20:10:28.727 に答える
0
$i = 0;
while (true)
{
   $results['people'][$i]['name'] = 'XxXxX'
   $results['people'][$i]['street'] = 'XxXxX'
   $results['people'][$i]['city'] = 'XxXxX'
   $results['people'][$i]['state'] = 'XxXxX'
   $results['people'][$i]['zip'] = 'XxXxX'


 $i++;
}
于 2012-11-30T20:13:22.000 に答える