这让我很生气..我有一个PHP脚本,它以$ key =>格式返回一个数组$ value,我想重命名密钥,以便我可以在表头中显示它。我看到有几种方法可以做到这一点,但我不确定它们是我需要的......或者我没有正确理解这些例子,这可能就是问题。
基本上,每次迭代foreach循环时,我的数组键都不同,有些可能是空白的。我怎么能绕过这个?
第一个输出可能如下所示:
'_can_chaccess' => false,
'_can_chown' => false,
'_can_delete' => false,
'_can_modify' => false,
'_can_read' => true,
'assigned_to_name_879' => 'Unassigned',
'id' => 1,
'type' => 'Private::Reporting::DataViewModel::DataView_223_42858',
'type_877' => 'Email',
下一次尝试,我可能会得到这个:
'_can_chaccess' => false,
'_can_chown' => false,
'_can_delete' => false,
'_can_modify' => false,
'_can_read' => true,
'assigned_to_name_793' => 'Consultants',
'id' => 1,
'object_reference_794' => 'CASE-1004',
'summary_795' => 'Deployment of New System for HQ (Project)',
'type' => 'Private::Reporting::DataViewModel::DataView_200_42858',
),
如您所见,某些键重命名相同,例如id,类型。但是我感兴趣的最重要的每次都会改变,例如分配给姓名。
有什么想法吗?
答案 0 :(得分:0)
您从哪里收到数据?
您可以以某种方式修改数据源,因此如果它是一个查询(我在此不假设),您可以使用 SELECT ... AS ... 语句。
首先,您需要知道如何解释更改密钥。如果是“assigned_to_name_879”和“assigned_to_name_793”是相同的字段,您可以定义规范函数,该函数将两个输入映射到唯一输出。
cannonical函数的输出以及其他数组键可以作为附加数组的键,其中包含输出的表头。
因此,您当前的数组是值的数组,您可以手动定义标题的数组:
阵列( 'assigned_to_name_879'=> '姓名分配' );
如果您使用数组两次,这种将表头存储在数组中的动态方式才有意义。否则,您只需在输出的html代码中编写标题即可。
答案 1 :(得分:0)
我已经设法使用以下内容解决了这个问题:
$mappings_array = array();
foreach ($report['data'][0] as $key => $value) {
$workbooks->log('Old Key', $key);
preg_match_all('([^_\d]+)', $key, $new_key);
$workbooks->log('New Key', $new_key);
$str = implode(" ", $new_key[0]);
$capitalised = ucwords($str);
array_push($mappings_array,$capitalised);
}
也许这不是最好的解决方案,但它有效:)我得到以下输出:
> New array: «array (
0 => 'Can Chaccess',
1 => 'Can Chown',
2 => 'Can Delete',
3 => 'Can Modify',
4 => 'Can Read',
5 => 'Id',
6 => 'Total Type',
7 => 'Type',
8 => 'Type',
)