自从我进行任何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循环中填充。
首先,问题是这是正确的形式吗?我觉得我很亲密但不对。理解我正在做的事情可能会有所帮助(如下所示)。
所以我说,我想在一个循环中填充这个,这基本上是我到目前为止。到目前为止,我一直无法上班。
$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对象发送回浏览器。
我不确定我的初始化是否错误,在循环中设置数组是错误的,还是两者都有。
答案 0 :(得分: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++;
}
请记住,如果您使用关联数组,则需要将键字符串包装在引号中。此外,您仍然可以使用您应该感觉如此倾向的整数索引来访问关联数组。
答案 1 :(得分:0)
我看到一些问题。首先是%i++
而不是$i++
。之后,您引用i
而不是$i
。下一个是在你的while循环中,你试图访问name,street,ect而不使用引号(根据你的配置,这可能/可能不会显示警告)。
尝试使用:
$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++;
}
答案 2 :(得分: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++;
}
答案 3 :(得分:0)
首先,不是命名所有键并声明空字符串,您只需创建一个名称数组,然后使用array_fill_keys
将它们转换为键并为它们提供所有默认值(应该使用NULL
而不是''
,除非您需要在循环中使用append(.=
)。
我只使用for循环,而不是while循环,但如果您希望while $i < 10
超过$i++
,则可以使用while
for
$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';
}