我想创建和初始化一个多维数组,其中包含第二维的已知可能键,但没有值。
此数组将存储event_ids
(动态填充),并为每个event_id
存储具有四个不同计数(也动态填充)的数组。
我想要创建的结构
Array
(
[0] => Array =================> This index will be the event_id
(
[invitation_not_sent_count] =>
[no_response_yet_count] =>
[will_not_attend_count] =>
[will_attend_count] =>
)
)
到目前为止我做了什么?
$DataArray = array();
$DataArray[] = array('invitation_not_sent_count' => '',
'no_response_yet_count' => '',
'will_not_attend_count' => '',
'will_attend_count' => '');
在循环内部,我正在动态填充数据,如:
$DataArray[$result->getId()]['no_response_yet_count'] = $NRCount;
我得到的是:
Array
(
[0] => Array
(
[invitation_not_sent_count] =>
[no_response_yet_count] =>
[will_not_attend_count] =>
[will_attend_count] =>
)
[18569] => Array
(
[no_response_yet_count] => 2
)
[18571] => Array
(
[no_response_yet_count] => 1
)
)
我想要的是,如果迭代中没有值,则其条目应为初始化时定义的空。因此,如果除no_response_yet_count
之外的数据中的所有其他计数都为空,则数组应为:
预期输出
Array
(
[18569] => Array
(
[invitation_not_sent_count] =>
[no_response_yet_count] => 2
[will_not_attend_count] =>
[will_attend_count] =>
)
[18571] => Array
(
[invitation_not_sent_count] =>
[no_response_yet_count] => 1
[will_not_attend_count] =>
[will_attend_count] =>
)
)
答案 0 :(得分:0)
我通常在那时采用映射函数:
function pre_map(&$row) {
$row = array
(
'invitation_not_sent_count' => '',
'no_response_yet_count' => '',
'will_not_attend_count' => '',
'will_attend_count' => ''
);
}
然后在while / for循环中:
{
$id = $result->getId();
if (!isset($DataArray[$id])) { pre_map($DataArray[$id]); }
$DataArray[$id]['no_response_yet_count'] = $NRCount;
}
if (!isset($DataArray[$id]))
是为了确保它不会消除相同的索引行,以防您碰巧在同一个ID上重新循环。因此,它只会映射一次,然后再也不会再循环。
还有一些其他的单行快捷方式,甚至可能使用array_map(),但我正在展示长版本,以获得完全的灵活性以防万一。