# curl_setopt_array

(PHP 5 >= 5.1.3, PHP 7)

curl_setopt_array — 为 cURL 传输会话批量设置选项

### 说明

curl_setopt_array ( resource `$ch` , array `$options` ) : bool

为 cURL 传输会话批量设置选项。这个函数对于需要设置大量的 cURL 选项是非常有用的，不需要重复地调用 curl_setopt()。

### 参数

`ch`

  由 curl_init() 返回的 cURL 句柄。

`options`

  一个 array 用来确定将被设置的选项及其值。数组的键值必须是一个有效的curl_setopt()常量或者是它们对等的整数值。

### 返回值

如果全部的选项都被成功设置，返回`TRUE`。如果一个选项不能被成功设置，马上返回`FALSE`，忽略其后的任何在`options`数组中的选项。

### 范例

Example #1 初始化新的 cURL 会话并抓取 web 页面

    <?php
    // 创建一个新 cURL 资源
    $ch = curl_init();

    // 设置 URL 和相应的选项
    $options = array(CURLOPT_URL => 'http://www.example.com/',
                     CURLOPT_HEADER => false
                    );

    curl_setopt_array($ch, $options);

    // 抓取 URL 并把它传递给浏览器
    curl_exec($ch);

    // 关闭 cURL 资源，并且释放系统资源
    curl_close($ch);
    ?>

早于PHP 5.1.3这个函数可以做如下模拟：

Example #2 我们对curl_setopt_array()的等价实现

    <?php
    if (!function_exists('curl_setopt_array')) {
       function curl_setopt_array(&$ch, $curl_options)
       {
           foreach ($curl_options as $option => $value) {
               if (!curl_setopt($ch, $option, $value)) {
                   return false;
               }
           }
           return true;
       }
    }
    ?>

### 注释

> Note:

> 就curl_setopt()来说，传递一个数组到`CURLOPT_POST`将会把数据以multipart/form-data的方式编码，然而传递一个URL-encoded字符串将会以application/x-www-form-urlencoded的方式对数据进行编码。

### 参见

- curl_setopt() - 设置 cURL 传输选项