使用命名数组键访问 PHP 中的 Google Sheets API 数组
Accessing Google Sheets API array in PHP with named array keys
使用以下基本 Google 工作表 API 代码:
$client = getClient();
$service = new Google_Service_Sheets($client);
$spreadsheetId = 'xxxxxxxxxx';
$offersrange = 'Leads';
$offersresponse = $service->spreadsheets_values->get($spreadsheetId, $offersrange);
$offersvalues = $offersresponse->getValues();
var_dump($offersvalues);die;
我希望能够使用命名键访问数组,例如 $array[date] 和 $array[vendor]。但这里是 var_dump 输出,我正在努力理解如何将它放入一个数组中,我可以在其中使用命名键。
下面是来自 3 行 sheet 的 var_dump,第 1 行是 header,第 2 行和第 3 行是示例数据。
array(3) { [0]=> array(7) { [0]=> string(4) "date" [1]=> string(6) "vendor" [2]=> string(6) "userid" [3]=> string(8) "username" [4]=> string(5) "email" [5]=> string(6) "status" [6]=> string(11) "description" } [1]=> array(7) { [0]=> string(8) "12/11/18" [1]=> string(2) "v1" [2]=> string(1) "1" [3]=> string(2) "u1" [4]=> string(2) "e1" [5]=> string(1) "0" [6]=> string(16) "test description" } [2]=> array(7) { [0]=> string(8) "12/11/18" [1]=> string(2) "v2" [2]=> string(1) "2" [3]=> string(2) "u2" [4]=> string(2) "e2" [5]=> string(1) "1" [6]=> string(11) "another one" } }
格式化var_dump:
(array) [3 elements]
0:
(array) [7 elements]
0: (string) "date"
1: (string) "vendor"
2: (string) "userid"
3: (string) "username"
4: (string) "email"
5: (string) "status"
6: (string) "description"
1:
(array) [7 elements]
0: (string) "12/11/18"
1: (string) "v1"
2: (string) "1"
3: (string) "u1"
4: (string) "e1"
5: (string) "0"
6: (string) "test description"
2:
(array) [7 elements]
0: (string) "12/11/18"
1: (string) "v2"
2: (string) "2"
3: (string) "u2"
4: (string) "e2"
5: (string) "1"
6: (string) "another one"
最终,我的目标是能够在我的代码中引用 $row['status'] 和 $row['date'] 等变量。
我需要根据源传播sheet将名称设为"dynamic",以便将来更改传播sheet列时,数组名称仍然保持一致(例如,日期始终是日期,即使它不再是第一列)。
您可以选择使用第一行作为参考或遍历所有结果并自行重命名键:
使用第一行作为参考点:
$cols = array_shift( $offersvalues );
$cols = array_flip( $cols );
$row1_date = $offersvalues[ 0 ][ $cols[ 'date' ] ];
自己重命名列:
$cols = array_shift( $offersvalues );
$new_offersvalues = array();
foreach( $offersvalues as $k=>$v )
{
$new_offersvalues[ $k ] = array();
foreach( $v as $k2=>$v2 )
{
$new_offersvalues[ $k ][ $cols[ $k2 ] ] = $v2;
}
unset( $offersvalues[ $k ] );
}
使用以下基本 Google 工作表 API 代码:
$client = getClient();
$service = new Google_Service_Sheets($client);
$spreadsheetId = 'xxxxxxxxxx';
$offersrange = 'Leads';
$offersresponse = $service->spreadsheets_values->get($spreadsheetId, $offersrange);
$offersvalues = $offersresponse->getValues();
var_dump($offersvalues);die;
我希望能够使用命名键访问数组,例如 $array[date] 和 $array[vendor]。但这里是 var_dump 输出,我正在努力理解如何将它放入一个数组中,我可以在其中使用命名键。
下面是来自 3 行 sheet 的 var_dump,第 1 行是 header,第 2 行和第 3 行是示例数据。
array(3) { [0]=> array(7) { [0]=> string(4) "date" [1]=> string(6) "vendor" [2]=> string(6) "userid" [3]=> string(8) "username" [4]=> string(5) "email" [5]=> string(6) "status" [6]=> string(11) "description" } [1]=> array(7) { [0]=> string(8) "12/11/18" [1]=> string(2) "v1" [2]=> string(1) "1" [3]=> string(2) "u1" [4]=> string(2) "e1" [5]=> string(1) "0" [6]=> string(16) "test description" } [2]=> array(7) { [0]=> string(8) "12/11/18" [1]=> string(2) "v2" [2]=> string(1) "2" [3]=> string(2) "u2" [4]=> string(2) "e2" [5]=> string(1) "1" [6]=> string(11) "another one" } }
格式化var_dump:
(array) [3 elements]
0:
(array) [7 elements]
0: (string) "date"
1: (string) "vendor"
2: (string) "userid"
3: (string) "username"
4: (string) "email"
5: (string) "status"
6: (string) "description"
1:
(array) [7 elements]
0: (string) "12/11/18"
1: (string) "v1"
2: (string) "1"
3: (string) "u1"
4: (string) "e1"
5: (string) "0"
6: (string) "test description"
2:
(array) [7 elements]
0: (string) "12/11/18"
1: (string) "v2"
2: (string) "2"
3: (string) "u2"
4: (string) "e2"
5: (string) "1"
6: (string) "another one"
最终,我的目标是能够在我的代码中引用 $row['status'] 和 $row['date'] 等变量。
我需要根据源传播sheet将名称设为"dynamic",以便将来更改传播sheet列时,数组名称仍然保持一致(例如,日期始终是日期,即使它不再是第一列)。
您可以选择使用第一行作为参考或遍历所有结果并自行重命名键:
使用第一行作为参考点:
$cols = array_shift( $offersvalues );
$cols = array_flip( $cols );
$row1_date = $offersvalues[ 0 ][ $cols[ 'date' ] ];
自己重命名列:
$cols = array_shift( $offersvalues );
$new_offersvalues = array();
foreach( $offersvalues as $k=>$v )
{
$new_offersvalues[ $k ] = array();
foreach( $v as $k2=>$v2 )
{
$new_offersvalues[ $k ][ $cols[ $k2 ] ] = $v2;
}
unset( $offersvalues[ $k ] );
}