在PHP中使用数组作为请求头

在PHP中使用数组作为请求头,php,Php,我正在尝试使用PHPstream\u context\u create和file\u GET\u contents向API发送GET请求 我需要将API键添加到请求的头中,我将它们存储在一个数组中,以便以后可以轻松地编辑它们并在多个函数中使用它们。将这些数组作为头包含的好方法是什么 在这种情况下,数组的键是头键,数组的值是头的值 <?php $api = [ 'X-Api-Id' => 'id', 'X-Api-Key' => 'key', 'X-Api

我正在尝试使用PHP
stream\u context\u create
file\u GET\u contents
向API发送GET请求

我需要将API键添加到请求的头中,我将它们存储在一个数组中,以便以后可以轻松地编辑它们并在多个函数中使用它们。将这些数组作为头包含的好方法是什么

在这种情况下,数组的键是头键,数组的值是头的值

<?php
$api = [
    'X-Api-Id' => 'id',
    'X-Api-Key' => 'key',
    'X-Api-Secret' => 'secret',
];
$headerData['Content-type'] = 'application/x-www-form-urlencoded';
$headerData = array_merge($headerData, $api);
array_walk($headerData, static function(&$v, $k) { $v = $k.': '.$v; });

$options = array(
    'http' => [
        'header' => implode("\n", $headerData),
        'method' => 'GET'
    ]
);  
return file_get_contents('example.com', FALSE, stream_context_create($options));
?>
一些代码来解释这个问题


只需将信息添加到标题中即可

<?php
$api = [
    'X-Api-Id' => 'id',
    'X-Api-Key' => 'key',
    'X-Api-Secret' => 'secret',
];
$headerData['Content-type'] = 'application/x-www-form-urlencoded';
$headerData = array_merge($headerData, $api);
array_walk($headerData, static function(&$v, $k) { $v = $k.': '.$v; });

$options = array(
    'http' => [
        'header' => implode("\n", $headerData),
        'method' => 'GET'
    ]
);  
return file_get_contents('example.com', FALSE, stream_context_create($options));
?>

要对数据进行编码,可以使用http\u build\u query()。 要将其添加到标题选项,您应该能够执行以下操作:

$options = array(
    "http" =>array(
        'method'  => 'POST', // GET in your case(?)
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($api)
    )
);

编程的一般建议:分解问题。您知道数组的外观,也知道字符串需要的外观。忽略创建该字符串的原因,思考“如何将数组转换为字符串?”然后在本网站和其他网站上查找成千上万的人做类似事情的示例。请分享更多详细信息。什么东西不适用于给定的代码?我是否能够将当前数组内爆到
标题
字段中?我刚刚更新了代码,以保留您的$api数组,并将数据与$headerData数组合并。array_walk为内爆函数准备值。