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

我看到了几个问题。第一个是你有%i++而不是$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 回答
0

首先,与其命名所有键并声明空字符串,您只需创建一个名称数组并使用array_fill_keys将它们转换为键并为它们全部提供默认值(可能应该使用NULL而不是,''除非您需要.=在循环中使用 append ( ) . 而不是 while 循环,我只会使用 for 循环,但如果你更喜欢的话,你可以使用while $i < 10with$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 回答