# php_manual

id: ZMQ::__construct
type: function
doc:
<comment>Description:</comment>
  ZMQ constructor
  
  Private constructor to prevent direct initialization. This class holds the constants for ZMQ
  extension.


id: ZMQContext::__construct
type: function
doc:
<comment>Description:</comment>
  Construct a new ZMQContext object
  
  Constructs a new ZMQ context. The context is used to initialize sockets. A persistent context is
  required  to initialize persistent sockets.

<comment>Param:</comment>
  <info>int</info>   <strong>$io_threads</strong>     Number of io-threads in the context.
  <info>bool</info>  <strong>$is_persistent</strong>  Whether the context is persistent. Persistent context is stored over
                        multiple requests and is a requirement for persistent sockets.


id: ZMQContext::getOpt
type: function
doc:
<comment>Description:</comment>
  Get context option
  
  Returns the value of a context option.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>  An integer representing the option. See the <info>ZMQ::CTXOPT_*</info> constants.

<comment>Return:</comment>
  <info>mixed</info>  Returns either a <info>string</info> or an <info>int</info> depending on <strong>$key</strong>. Throws ZMQContextException on error.


id: ZMQContext::getSocket
type: function
doc:
<comment>Description:</comment>
  Create a new socket
  
  Shortcut for creating new sockets from the context. If the context is not persistent the
  <strong>$persistent_id</strong>  parameter is ignored and the socket falls back to being non-persistent. The
  <strong>$on_new_socket</strong> is called only when a new underlying socket structure is created.

<comment>Param:</comment>
  <info>int</info>       <strong>$type</strong>           <info>ZMQ::SOCKET_*</info> constant to specify socket type.
  <info>string</info>    <strong>$persistent_id</strong>  If <strong>$persistent_id</strong> is specified the socket will be persisted over
                            multiple requests.
  <info>callable</info>  <strong>$on_new_socket</strong>  Callback function, which is executed when a new socket structure is
                            created. This function does not get invoked if the underlying persistent
                            connection is re-used. The callback takes ZMQSocket and persistent_id as
                            two arguments.

<comment>Return:</comment>
  <info>ZMQSocket</info>  Returns a <class>ZMQSocket</class> object.


id: ZMQContext::isPersistent
type: function
doc:
<comment>Description:</comment>
  Whether the context is persistent
  
  Whether the context is persistent. Persistent context is needed for persistent connections as each
  socket is allocated from a context.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the context is persistent and <info>false</info> if the context is non-persistent.


id: ZMQContext::setOpt
type: function
doc:
<comment>Description:</comment>
  Set a socket option
  
  Sets a ZMQ context option. The type of the <strong>$value</strong> depends on the <strong>$key</strong>. See ZMQ Constant Types for
  more information.

<comment>Param:</comment>
  <info>int</info>    <strong>$key</strong>    One of the <info>ZMQ::CTXOPT_*</info> constants.
  <info>mixed</info>  <strong>$value</strong>  The value of the parameter.

<comment>Return:</comment>
  <info>ZMQContext</info>  Returns the current object. Throws ZMQContextException on error.


id: ZMQDevice::__construct
type: function
doc:
<comment>Description:</comment>
  Construct a new device
  
  "ØMQ devices can do intermediation of addresses, services, queues, or any other abstraction you
  care to define above the message and socket layers." -- zguide

<comment>Param:</comment>
  <info>ZMQSocket</info>  <strong>$frontend</strong>  Frontend parameter for the devices. Usually where there messages are coming.
  <info>ZMQSocket</info>  <strong>$backend</strong>   Backend parameter for the devices. Usually where there messages going to.
  <info>ZMQSocket</info>  <strong>$listener</strong>  Listener socket, which receives a copy of all messages going both
                        directions. The type of this socket should be SUB, PULL or DEALER.

<comment>Return:</comment>
  <info>unknown</info>  Call to this method will prepare the device. Usually devices are very long running
           processes so running this method from interactive script is not recommended. This method
           throw ZMQDeviceException if the device cannot be started.


id: ZMQDevice::getIdleTimeout
type: function
doc:
<comment>Description:</comment>
  Get the idle timeout
  
  Gets the idle callback timeout value. Added in ZMQ extension version 1.1.0.

<comment>Return:</comment>
  <info>ZMQDevice</info>  This method returns the idle callback timeout value.


id: ZMQDevice::getTimerTimeout
type: function
doc:
<comment>Description:</comment>
  Get the timer timeout
  
  Gets the timer callback timeout value. Added in ZMQ extension version 1.1.0.

<comment>Return:</comment>
  <info>ZMQDevice</info>  This method returns the timer timeout value.


id: ZMQDevice::run
type: function
doc:
<comment>Description:</comment>
  Run the new device
  
  Runs the device.

<comment>Return:</comment>
  <info>void</info>  Call to this method will block until the device is running. It is not recommended that
        devices are used from interactive scripts. On failure this method will throw
        ZMQDeviceException.


id: ZMQDevice::setIdleCallback
type: function
doc:
<comment>Description:</comment>
  Set the idle callback function
  
  Sets the idle callback function. If idle timeout is defined the idle callback function shall be
  called if the internal poll loop times out without events. If the callback function returns false
  or a value that evaluates to false the device is stopped.
   The callback function signature is callback (mixed $user_data).

<comment>Param:</comment>
  <info>callable</info>  <strong>$cb_func</strong>    Callback function to invoke when the device is idle. Returning false or a
                        value that evaluates to false from this function will cause the  device to
                        stop.
  <info>int</info>       <strong>$timeout</strong>    How often to invoke the idle callback in milliseconds. The idle callback is
                        invoked periodically when there is no activity on the device. The timeout
                        value guarantees that there is at least this amount of milliseconds between
                        invocations of the callback function.
  <info>mixed</info>     <strong>$user_data</strong>  Additional data to pass to the callback function.

<comment>Return:</comment>
  <info>ZMQDevice</info>  On success this method returns the current object.


id: ZMQDevice::setIdleTimeout
type: function
doc:
<comment>Description:</comment>
  Set the idle timeout
  
  Sets the idle callback timeout value. The idle callback is invoked periodically when the device is
  idle.

<comment>Param:</comment>
  <info>int</info>  <strong>$timeout</strong>  The idle callback timeout value.

<comment>Return:</comment>
  <info>ZMQDevice</info>  On success this method returns the current object.


id: ZMQDevice::setTimerCallback
type: function
doc:
<comment>Description:</comment>
  Set the timer callback function
  
  Sets the timer callback function. The timer callback will be invoked after timeout has passed. The
  difference between idle and timer callbacks are that idle callback is invoked only when the device
  is idle.
   The callback function signature is callback (mixed $user_data). Added in ZMQ extension version
  1.1.0.

<comment>Param:</comment>
  <info>callable</info>  <strong>$cb_func</strong>    Callback function to invoke when the device is idle. Returning false or a
                        value that evaluates to false from this function will cause the  device to
                        stop.
  <info>int</info>       <strong>$timeout</strong>    How often to invoke the idle callback in milliseconds. The idle callback is
                        invoked periodically when there is no activity on the device. The timeout
                        value guarantees that there is at least this amount of milliseconds between
                        invocations of the callback function.
  <info>mixed</info>     <strong>$user_data</strong>  Additional data to pass to the callback function.

<comment>Return:</comment>
  <info>ZMQDevice</info>  On success this method returns the current object.


id: ZMQDevice::setTimerTimeout
type: function
doc:
<comment>Description:</comment>
  Set the timer timeout
  
  Sets the timer callback timeout value. The timer callback is invoked periodically if it's set.
  Added in ZMQ extension version 1.1.0.

<comment>Param:</comment>
  <info>int</info>  <strong>$timeout</strong>  The timer callback timeout value.

<comment>Return:</comment>
  <info>ZMQDevice</info>  On success this method returns the current object.


id: ZMQPoll::add
type: function
doc:
<comment>Description:</comment>
  Add item to the poll set
  
  Adds a new item to the poll set and returns the internal id of the added item. The item can be
  removed from the poll set using the returned string id.

<comment>Param:</comment>
  <info>mixed</info>  <strong>$entry</strong>  ZMQSocket object or a PHP stream resource
  <info>int</info>    <strong>$type</strong>   Defines what activity the socket is polled for.  See <info>ZMQ::POLL_IN</info> and <info>ZMQ::POLL_OUT</info>
                 constants.

<comment>Return:</comment>
  <info>string</info>  Returns a string id of the added item which can be later used to remove the item.  Throws
          ZMQPollException on error.


id: ZMQPoll::clear
type: function
doc:
<comment>Description:</comment>
  Clear the poll set
  
  Clears all elements from the poll set.

<comment>Return:</comment>
  <info>ZMQPoll</info>  Returns the current object.


id: ZMQPoll::count
type: function
doc:
<comment>Description:</comment>
  Count items in the poll set
  
  Count the items in the poll set.

<comment>Return:</comment>
  <info>int</info>  Returns an <info>int</info> representing the amount of items in the poll set.


id: ZMQPoll::getLastErrors
type: function
doc:
<comment>Description:</comment>
  Get poll errors
  
  Returns the ids of the objects that had errors in the last poll.

<comment>Return:</comment>
  <info>array</info>  Returns an array containing ids for the items that had errors in the last poll. Empty array
         is  returned if there were no errors.


id: ZMQPoll::poll
type: function
doc:
<comment>Description:</comment>
  Poll the items
  
  Polls the items in the current poll set. The readable and writable items are returned in the
  <strong>$readable</strong> and <strong>$writable</strong> parameters.  <strong>ZMQPoll::getLastErrors()</strong> can be used to check if there were
  errors.

<comment>Param:</comment>
  <info>array</info>  <strong>$readable</strong>  Array where readable ZMQSockets/PHP streams are returned. The array will be
                    cleared at the beginning of the operation.
  <info>array</info>  <strong>$writable</strong>  Array where writable ZMQSockets/PHP streams are returned. The array will be
                    cleared at the beginning of the operation.
  <info>int</info>    <strong>$timeout</strong>   Timeout for the operation. -1 means that poll waits until at least one item has
                    activity. Please note that starting from  version 1.0.0 the poll timeout is
                    defined in milliseconds, rather than microseconds.

<comment>Return:</comment>
  <info>int</info>  Returns an integer representing the amount of items with activity.


id: ZMQPoll::remove
type: function
doc:
<comment>Description:</comment>
  Remove item from poll set
  
  Remove item from the poll set. The <strong>$item</strong> parameter can be ZMQSocket object, a stream resource or
  the id returned from <strong>ZMQPoll::add()</strong> method.

<comment>Param:</comment>
  <info>mixed</info>  <strong>$item</strong>  The ZMQSocket object, PHP stream or <info>string</info> id of the item.

<comment>Return:</comment>
  <info>bool</info>  Returns true if the item was removed and false if the object  with given id does not exist
        in the poll set.


id: ZMQSocket::__construct
type: function
doc:
<comment>Description:</comment>
  Construct a new ZMQSocket
  
  Constructs a ZMQSocket object. <strong>$persistent_id</strong> parameter can be used to allocated a persistent
  socket. A persistent socket has to be allocated from a persistent context and it stays connected
  over multiple requests. The <strong>$persistent_id</strong> parameter can be used to recall the same socket over
  multiple requests. The      <strong>$on_new_socket</strong> is called only when a new underlying socket structure
  is created.

<comment>Param:</comment>
  <info>ZMQContext</info>  <strong>$context</strong>        ZMQContext object.
  <info>int</info>         <strong>$type</strong>           The socket type. See <info>ZMQ::SOCKET_*</info> constants.
  <info>string</info>      <strong>$persistent_id</strong>  If <strong>$persistent_id</strong> is specified the socket will be persisted over
                              multiple requests. If <strong>$context</strong> is not persistent the socket falls back
                              to non-persistent mode.
  <info>callable</info>    <strong>$on_new_socket</strong>  Callback function, which is executed when a new socket structure is
                              created. This function does not get invoked if the underlying
                              persistent connection is re-used.


id: ZMQSocket::bind
type: function
doc:
<comment>Description:</comment>
  Bind the socket
  
  Bind the socket to an endpoint. The endpoint is defined in format <return>transport://address</return> where
  transport is one of the following: inproc, ipc, tcp, pgm or epgm.

<comment>Param:</comment>
  <info>string</info>  <strong>$dsn</strong>    The bind dsn, for example <return>transport://address</return>.
  <info>bool</info>    <strong>$force</strong>  Tries to bind even if the socket has already been bound to the given endpoint.

<comment>Return:</comment>
  <info>ZMQSocket</info>  Returns the current object. Throws ZMQSocketException on error.


id: ZMQSocket::connect
type: function
doc:
<comment>Description:</comment>
  Connect the socket
  
  Connect the socket to a remote endpoint. The endpoint is defined in format <return>transport://address</return>
  where  transport is one of the following: inproc, ipc, tcp, pgm or epgm.

<comment>Param:</comment>
  <info>string</info>  <strong>$dsn</strong>    The connect dsn, for example <return>transport://address</return>.
  <info>bool</info>    <strong>$force</strong>  Tries to connect even if the socket has already been connected to given endpoint.

<comment>Return:</comment>
  <info>ZMQSocket</info>  Returns the current object.


id: ZMQSocket::disconnect
type: function
doc:
<comment>Description:</comment>
  Disconnect a socket
  
  Disconnect the socket from a previously connected remote endpoint. The endpoint is defined in
  format <return>transport://address</return> where transport is one of the following: inproc, ipc, tcp, pgm or epgm.

<comment>Param:</comment>
  <info>string</info>  <strong>$dsn</strong>  The connect dsn, for example <return>transport://address</return>.

<comment>Return:</comment>
  <info>ZMQSocket</info>  Returns the current object. Throws ZMQSocketException on error.


id: ZMQSocket::getEndpoints
type: function
doc:
<comment>Description:</comment>
  Get list of endpoints
  
  Returns a list of endpoints where the socket is connected or bound to.

<comment>Return:</comment>
  <info>array</info>  Returns an array containing elements 'bind' and 'connect'.


id: ZMQSocket::getPersistentId
type: function
doc:
<comment>Description:</comment>
  Get the persistent id
  
  Returns the persistent id of the socket.

<comment>Return:</comment>
  <info>string</info>  Returns the persistent id string assigned of the object and <info>null</info> if socket is not
          persistent.


id: ZMQSocket::getSockOpt
type: function
doc:
<comment>Description:</comment>
  Get socket option
  
  Returns the value of a socket option.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>  An integer representing the option. See the <info>ZMQ::SOCKOPT_*</info> constants.

<comment>Return:</comment>
  <info>mixed</info>  Returns either a <info>string</info> or an <info>int</info> depending on <strong>$key</strong>. Throws ZMQSocketException on error.


id: ZMQSocket::getSocketType
type: function
doc:
<comment>Description:</comment>
  Get the socket type
  
  Gets the socket type.

<comment>Return:</comment>
  <info>int</info>  Returns an integer representing the socket type. The integer can be compared against
       <info>ZMQ::SOCKET_*</info> constants.


id: ZMQSocket::isPersistent
type: function
doc:
<comment>Description:</comment>
  Whether the socket is persistent
  
  Check whether the socket is persistent.

<comment>Return:</comment>
  <info>bool</info>  Returns a <info>bool</info> based on whether the socket is persistent or not.


id: ZMQSocket::recv
type: function
doc:
<comment>Description:</comment>
  Receives a message
  
  Receive a message from a socket. By default receiving will block until a message is available
  unless <info>ZMQ::MODE_DONTWAIT</info> flag is used. <info>ZMQ::SOCKOPT_RCVMORE</info> socket option can be used for
  receiving multi-part messages. See <strong>ZMQSocket::setSockOpt()</strong>  for more information.

<comment>Param:</comment>
  <info>int</info>  <strong>$mode</strong>  Pass mode flags to receive multipart messages or non-blocking operation.  See
              <info>ZMQ::MODE_*</info> constants.

<comment>Return:</comment>
  <info>string</info>  Returns the message. If <info>ZMQ::MODE_DONTWAIT</info>  is used and the operation would block <info>false</info>
          shall be returned.


id: ZMQSocket::recvMulti
type: function
doc:
<comment>Description:</comment>
  Receives a multipart message
  
  Receive an array multipart message from a socket. By default receiving will block until a message
  is available unless <info>ZMQ::MODE_NOBLOCK</info> flag is used.

<comment>Param:</comment>
  <info>int</info>  <strong>$mode</strong>  Pass mode flags to receive multipart messages or non-blocking operation.  See
              <info>ZMQ::MODE_*</info> constants.

<comment>Return:</comment>
  <info>array</info>  Returns the array of message parts. Throws ZMQSocketException in error.  If
         <info>ZMQ::MODE_NOBLOCK</info> is used and the operation would  block <info>bool</info> false shall be returned.


id: ZMQSocket::send
type: function
doc:
<comment>Description:</comment>
  Sends a message
  
  Send a message using the socket. The operation can block unless <info>ZMQ::MODE_NOBLOCK</info> is used.

<comment>Param:</comment>
  <info>string</info>  <strong>$message</strong>  The message to send.
  <info>int</info>     <strong>$mode</strong>     Pass mode flags to receive multipart messages or non-blocking operation.  See
                    <info>ZMQ::MODE_*</info> constants.

<comment>Return:</comment>
  <info>ZMQSocket</info>  Returns the current object. Throws ZMQSocketException on error.  If <info>ZMQ::MODE_NOBLOCK</info>
             is used and the operation would  block <info>bool</info> false shall be returned.


id: ZMQSocket::sendmulti
type: function
doc:
<comment>Description:</comment>
  Sends a multipart message
  
  Send a multipart message using the socket. The operation can block unless <info>ZMQ::MODE_NOBLOCK</info> is
  used.

<comment>Param:</comment>
  <info>array</info>  <strong>$message</strong>  The message to send - an array of strings
  <info>int</info>    <strong>$mode</strong>     Pass mode flags to receive multipart messages or non-blocking operation.  See
                   <info>ZMQ::MODE_*</info> constants.

<comment>Return:</comment>
  <info>ZMQSocket</info>  Returns the current object. Throws ZMQSocketException on error.  If <info>ZMQ::MODE_NOBLOCK</info>
             is used and the operation would  block <info>bool</info> false shall be returned.


id: ZMQSocket::setSockOpt
type: function
doc:
<comment>Description:</comment>
  Set a socket option
  
  Sets a ZMQ socket option. The type of the <strong>$value</strong> depends on the <strong>$key</strong>. See ZMQ Constant Types for
  more information.

<comment>Param:</comment>
  <info>int</info>    <strong>$key</strong>    One of the <info>ZMQ::SOCKOPT_*</info> constants.
  <info>mixed</info>  <strong>$value</strong>  The value of the parameter.

<comment>Return:</comment>
  <info>ZMQSocket</info>  Returns the current object. Throws ZMQSocketException on error.


id: ZMQSocket::unbind
type: function
doc:
<comment>Description:</comment>
  Unbind the socket
  
  Unbind the socket from an endpoint. The endpoint is defined in format <return>transport://address</return> where
  transport is one of the following: inproc, ipc, tcp, pgm or epgm.

<comment>Param:</comment>
  <info>string</info>  <strong>$dsn</strong>  The previously bound dsn, for example <return>transport://address</return>.

<comment>Return:</comment>
  <info>ZMQSocket</info>  Returns the current object. Throws ZMQSocketException on error.


id: ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE
type: constant
doc:
<comment>Description:</comment>
  归档为空时不要删除文件。如果构建时使用的是 libzip ≥ 1.10.0，分别在 PHP 8.3.0 和 PECL zip 1.22.0 中
  可用。


id: ZipArchive::AFL_IS_TORRENTZIP
type: constant
doc:
<comment>Description:</comment>
  当前归档是 torrentzipped（使用 BitTorrent 压缩）。如果构建时使用的是 libzip ≥ 1.10.0，分别在 PHP
  8.3.0 和 PECL zip 1.22.0 中可用。


id: ZipArchive::AFL_RDONLY
type: constant
doc:
<comment>Description:</comment>
  归档只读，无法清除。如果构建时使用的是 libzip ≥ 1.10.0，分别在 PHP 8.3.0 和 PECL zip 1.22.0 中可
  用。


id: ZipArchive::AFL_WANT_TORRENTZIP
type: constant
doc:
<comment>Description:</comment>
  使用 torrentzip 格式写入归档。如果构建时使用的是 libzip ≥ 1.10.0，分别在 PHP 8.3.0 和 PECL zip
  1.22.0 中可用。


id: ZipArchive::CM_LZMA2
type: constant
doc:
<comment>Description:</comment>
  LZMA2 algorithm. Available as of PHP 7.4.3 and PECL zip 1.16.0, respectively, if built against
  libzip ≥ 1.6.0.


id: ZipArchive::CM_XZ
type: constant
doc:
<comment>Description:</comment>
  XZ 算法。 在 PHP 7.4.3 和 PECL zip 1.16.1 中可用，前提是编译时使用的 libzip 版本大于等于 1.6.0。


id: ZipArchive::CM_ZSTD
type: constant
doc:
<comment>Description:</comment>
  Zstandard（zstd）压缩算法。如果针对 libzip ≥ 1.8.0 编译，则分别从 PHP 8.0.0 和 PECL zip 1.19.1 开
  始可用。


id: ZipArchive::ER_CANCELLED
type: constant
doc:
<comment>Description:</comment>
  操作已取消。 在 PHP 7.4.3 和 PECL zip 1.16.1 中可用，前提是编译时使用的 libzip 版本大于等于
  1.6.0。


id: ZipArchive::ER_COMPRESSED_DATA
type: constant
doc:
<comment>Description:</comment>
  压缩数据无效。 在 PHP 7.4.3 和 PECL zip 1.16.1 中可用，前提是编译时使用的 libzip 版本大于等于
  1.6.0。


id: ZipArchive::ER_DATA_LENGTH
type: constant
doc:
<comment>Description:</comment>
  数据长度异常。如果构建时使用的是 libzip ≥ 1.10.0，分别在 PHP 8.3.0 和 PECL zip 1.22.0 中可用。


id: ZipArchive::ER_INUSE
type: constant
doc:
<comment>Description:</comment>
  资源仍在使用。 在 PHP 7.4.3 和 PECL zip 1.16.1 中可用，前提是编译时使用的 libzip 版本大于等于
  1.0.0。


id: ZipArchive::ER_NOT_ALLOWED
type: constant
doc:
<comment>Description:</comment>
  在 torrentzip 中不允许。如果构建时使用的是 libzip ≥ 1.10.0，分别在 PHP 8.3.0 和 PECL zip 1.22.0 中
  可用。


id: ZipArchive::ER_OPNOTSUPP
type: constant
doc:
<comment>Description:</comment>
  操作不支持。 在 PHP 7.4.3 和 PECL zip 1.16.1 中可用，前提是编译时使用的 libzip 版本大于等于
  1.0.0。


id: ZipArchive::ER_TELL
type: constant
doc:
<comment>Description:</comment>
  Tell error. 在 PHP 7.4.3 和 PECL zip 1.16.1 中可用，前提是编译时使用的 libzip 版本大于等于 1.0.0。


id: ZipArchive::FL_OPEN_FILE_NOW
type: constant
doc:
<comment>Description:</comment>
  在添加文件，而不是等待归档关闭时打开文件。需要注意文件描述符消耗的情况。 从 PHP 8.3.0 和 PECL zip
  1.22.1 起可用。


id: ZipArchive::FL_RECOMPRESS
type: constant
doc:
<comment>Description:</comment>
  强制重新压缩数据。 PHP 8.0.0 和 PECL zip 1.18.0 起可以使用。 从 PHP 8.3.0 和 PECL zip 1.22.1 起已
  被弃用， 将在 libzip 的未来版本中被删除。


id: ZipArchive::LENGTH_TO_END
type: constant
doc:
<comment>Description:</comment>
  使用的文件大小，如果文件增大，将会忽略附加数据，如果文件变小，则会引发错误
  （<info>ZipArchive::ER_DATA_LENGTH</info>）。 自 PHP 8.3.0 和 PECL zip 1.22.2 起可用。


id: ZipArchive::LENGTH_UNCHECKED
type: constant
doc:
<comment>Description:</comment>
  使用所有可用的数据。如果针对 libzip ≥ 1.10.1 编译，自 PHP 8.3.0 和 PECL zip 1.22.2 起可用。


id: ZipArchive::RDONLY
type: constant
doc:
<comment>Description:</comment>
  只读模式打开归档。 在 PHP 7.4.3 和 PECL zip 1.17.1 中可用，前提是编译时使用的 libzip 版本大于等于
  1.0.0。


id: ZipArchive::addEmptyDir
type: function
doc:
<comment>Description:</comment>
  Add a new directory
  
  Adds an empty directory in the archive.

<comment>Param:</comment>
  <info>string</info>  <strong>$dirname</strong>  The directory to add.
  <info>int</info>     <strong>$flags</strong>    Bitmask consisting of <info>ZipArchive::FL_ENC_GUESS</info>, <info>ZipArchive::FL_ENC_UTF_8</info>,
                    <info>ZipArchive::FL_ENC_CP437</info>. The behaviour of these constants is described on the
                    ZIP constants page.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::addFile
type: function
doc:
<comment>Description:</comment>
  Adds a file to a ZIP archive from the given path
  
  Adds a file to a ZIP archive from a given path.
  
  为了最大限度地提高代码可移植性，建议在 ZIP 文件名中使用斜线 (<return>/</return>) 做为目录分隔符。

<comment>Param:</comment>
  <info>string</info>  <strong>$filepath</strong>   The path to the file to add.
  <info>string</info>  <strong>$entryname</strong>  If supplied and not empty, this is the local name inside the ZIP archive that
                      will override the <strong>$filepath</strong>.
  <info>int</info>     <strong>$start</strong>      For partial copy, start position.
  <info>int</info>     <strong>$length</strong>     For partial copy, length to be copied, if <info>ZipArchive::LENGTH_TO_END</info> (0) the
                      file size is used, if <info>ZipArchive::LENGTH_UNCHECKED</info> the whole file is used
                      (starting from <strong>$start</strong>).
  <info>int</info>     <strong>$flags</strong>      Bitmask consisting of <info>ZipArchive::FL_OVERWRITE</info>, <info>ZipArchive::FL_ENC_GUESS</info>,
                      <info>ZipArchive::FL_ENC_UTF_8</info>, <info>ZipArchive::FL_ENC_CP437</info>,
                      <info>ZipArchive::FL_OPEN_FILE_NOW</info>. The behaviour of these constants is described on
                      the ZIP constants page.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::replaceFile


id: ZipArchive::addFromString
type: function
doc:
<comment>Description:</comment>
  Add a file to a ZIP archive using its contents
  
  Add a file to a ZIP archive using its contents.
  
  为了最大限度地提高代码可移植性，建议在 ZIP 文件名中使用斜线 (<return>/</return>) 做为目录分隔符。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>     The name of the entry to create.
  <info>string</info>  <strong>$content</strong>  The contents to use to create the entry. It is used in a binary safe mode.
  <info>int</info>     <strong>$flags</strong>    Bitmask consisting of <info>ZipArchive::FL_OVERWRITE</info>, <info>ZipArchive::FL_ENC_GUESS</info>,
                    <info>ZipArchive::FL_ENC_UTF_8</info>, <info>ZipArchive::FL_ENC_CP437</info>. The behaviour of these
                    constants is described on the ZIP constants page.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::addGlob
type: function
doc:
<comment>Description:</comment>
  Add files from a directory by glob pattern
  
  Add files from a directory which match the glob <strong>$pattern</strong>.
  
  为了最大限度地提高代码可移植性，建议在 ZIP 文件名中使用斜线 (<return>/</return>) 做为目录分隔符。

<comment>Param:</comment>
  <info>string</info>  <strong>$pattern</strong>  A <strong>glob()</strong> pattern against which files will be matched.
  <info>int</info>     <strong>$flags</strong>    A bit mask of <return>glob()</return> flags.
  <info>array</info>   <strong>$options</strong>  An associative array of options. Available options are: <return>"add_path"</return> Prefix to
                    prepend when translating to the local path of the file within the archive. This
                    is applied after any remove operations defined by the <return>"remove_path"</return> or
                    <return>"remove_all_path"</return> options. <return>"remove_path"</return> Prefix to remove from matching file
                    paths before adding to the archive. <return>"remove_all_path"</return><info>true</info> to use the file name
                    only and add to the root of the archive. <return>"flags"</return> Bitmask consisting of
                    <info>ZipArchive::FL_OVERWRITE</info>, <info>ZipArchive::FL_ENC_GUESS</info>, <info>ZipArchive::FL_ENC_UTF_8</info>,
                    <info>ZipArchive::FL_ENC_CP437</info>, <info>ZipArchive::FL_OPEN_FILE_NOW</info>. The behaviour of these
                    constants is described on the ZIP constants page. <return>"comp_method"</return> Compression
                    method, one of the <info>ZipArchive::CM_*</info> constants, see ZIP constants page.
                    <return>"comp_flags"</return> Compression level. <return>"enc_method"</return> Encryption method, one of the
                    <info>ZipArchive::EM_*</info> constants, see ZIP constants page. <return>"enc_password"</return> Password used
                    for encryption.
                    
                    <return>"add_path"</return>
                    
                    Prefix to prepend when translating to the local path of the file within the
                    archive. This is applied after any remove operations defined by the
                    <return>"remove_path"</return> or <return>"remove_all_path"</return> options.
                    
                    <return>"remove_path"</return>
                    
                    Prefix to remove from matching file paths before adding to the archive.
                    
                    <return>"remove_all_path"</return>
                    
                    <info>true</info> to use the file name only and add to the root of the archive.
                    
                    <return>"flags"</return>
                    
                    Bitmask consisting of <info>ZipArchive::FL_OVERWRITE</info>, <info>ZipArchive::FL_ENC_GUESS</info>,
                    <info>ZipArchive::FL_ENC_UTF_8</info>, <info>ZipArchive::FL_ENC_CP437</info>,
                    <info>ZipArchive::FL_OPEN_FILE_NOW</info>. The behaviour of these constants is described on
                    the ZIP constants page.
                    
                    <return>"comp_method"</return>
                    
                    Compression method, one of the <info>ZipArchive::CM_*</info> constants, see ZIP constants
                    page.
                    
                    <return>"comp_flags"</return>
                    
                    Compression level.
                    
                    <return>"enc_method"</return>
                    
                    Encryption method, one of the <info>ZipArchive::EM_*</info> constants, see ZIP constants
                    page.
                    
                    <return>"enc_password"</return>
                    
                    Password used for encryption.

<comment>Return:</comment>
  <info>array|false</info>  An <info>array</info> of added files on success  或者在失败时返回 <info>false</info>

<comment>See Also:</comment>
   * ZipArchive::addFile
   * ZipArchive::addPattern


id: ZipArchive::addPattern
type: function
doc:
<comment>Description:</comment>
  Add files from a directory by PCRE pattern
  
  Add files from a directory which match the regular expression <strong>$pattern</strong>. The operation is not
  recursive. The pattern will be matched against the file name only.

<comment>Param:</comment>
  <info>string</info>  <strong>$pattern</strong>  A PCRE pattern against which files will be matched.
  <info>string</info>  <strong>$path</strong>     The directory that will be scanned. Defaults to the current working directory.
  <info>array</info>   <strong>$options</strong>  An associative array of options accepted by ZipArchive::addGlob.

<comment>Return:</comment>
  <info>array|false</info>  An <info>array</info> of added files on success  或者在失败时返回 <info>false</info>

<comment>See Also:</comment>
   * ZipArchive::addFile
   * ZipArchive::addGlob


id: ZipArchive::clearError
type: function
doc:
<comment>Description:</comment>
  清除状态错误消息、系统和/或 zip 消息
  
  清除状态错误消息、系统和/或 zip 消息。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * ZipArchive::getStatusString


id: ZipArchive::close
type: function
doc:
<comment>Description:</comment>
  Close the active archive (opened or newly created)
  
  Close opened or created archive and save changes. This method is automatically called at the end
  of the script.
  
  If the archive contains no files, the file is completely removed by default (no empty archive is
  written) according to the value of the <info>ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE</info>
  global flag.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::setArchiveFlag


id: ZipArchive::count
type: function
doc:
<comment>Description:</comment>
  Counts the number of files in the archive

<comment>Return:</comment>
  <info>int</info>  Returns the number of files in the archive.


id: ZipArchive::deleteIndex
type: function
doc:
<comment>Description:</comment>
  Delete an entry in the archive using its index
  
  Delete an entry in the archive using its index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry to delete.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::deleteName
type: function
doc:
<comment>Description:</comment>
  Delete an entry in the archive using its name
  
  Delete an entry in the archive using its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  Name of the entry to delete.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::extractTo
type: function
doc:
<comment>Description:</comment>
  解压缩文件
  
  将完整归档或指定文件提取到指定的目录。
  
  提取的文件和目录的默认权限提供尽可能广泛的访问权限。这可以通过设置当前 umask 来限制，可以使用
  <strong>umask()</strong> 更改。
  
  出于安全原因，不会恢复原始权限。有关如何还原的示例，请参阅 ZipArchive::getExternalAttributesIndex
  页面上的代码示例。

<comment>Param:</comment>
  <info>string</info>             <strong>$pathto</strong>  解压缩的本地目标路径
  <info>array|string|null</info>  <strong>$files</strong>   要提取的条目。接受单个条目名称或名称数组。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::getArchiveComment
type: function
doc:
<comment>Description:</comment>
  Returns the Zip archive comment
  
  Returns the Zip archive comment.

<comment>Param:</comment>
  <info>int</info>  <strong>$flags</strong>  If flags is set to <info>ZipArchive::FL_UNCHANGED</info>, the original unchanged comment is
               returned.

<comment>Return:</comment>
  <info>string|false</info>  Returns the Zip archive comment 或者在失败时返回 <info>false</info>.


id: ZipArchive::getArchiveFlag
type: function
doc:
<comment>Description:</comment>
  返回 Zip 归档全局 flag 的值
  
  返回 Zip 归档全局 flag 的值。

<comment>Param:</comment>
  <info>int</info>  <strong>$flag</strong>   检索的全局 flag，包含 <return>AFL_*</return> 常量：
               <info>ZipArchive::AFL_RDONLY</info><info>ZipArchive::AFL_IS_TORRENTZIP</info><info>ZipArchive::AFL_WANT_TORRENTZIP</info><info>ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE</info>
               
               <info>ZipArchive::AFL_RDONLY</info>
               
               <info>ZipArchive::AFL_IS_TORRENTZIP</info>
               
               <info>ZipArchive::AFL_WANT_TORRENTZIP</info>
               
               <info>ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE</info>
  <info>int</info>  <strong>$flags</strong>  如果将 flag 设置为 <info>ZipArchive::FL_UNCHANGED</info>，则返回原始未更改的 flag。

<comment>Return:</comment>
  <info>int</info>  如果 flag 在归档中设置了，返回 1，没有返回 0，发生错误，返回 -1。

<comment>See Also:</comment>
   * ZipArchive::setArchiveFlag


id: ZipArchive::getCommentIndex
type: function
doc:
<comment>Description:</comment>
  Returns the comment of an entry using the entry index
  
  Returns the comment of an entry using the entry index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry
  <info>int</info>  <strong>$flags</strong>  If flags is set to <info>ZipArchive::FL_UNCHANGED</info>, the original unchanged comment is
               returned.

<comment>Return:</comment>
  <info>string|false</info>  Returns the comment on success 或者在失败时返回 <info>false</info>.


id: ZipArchive::getCommentName
type: function
doc:
<comment>Description:</comment>
  Returns the comment of an entry using the entry name
  
  Returns the comment of an entry using the entry name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>   Name of the entry
  <info>int</info>     <strong>$flags</strong>  If flags is set to <info>ZipArchive::FL_UNCHANGED</info>, the original unchanged comment is
                  returned.

<comment>Return:</comment>
  <info>string|false</info>  Returns the comment on success 或者在失败时返回 <info>false</info>.


id: ZipArchive::getExternalAttributesIndex
type: function
doc:
<comment>Description:</comment>
  Retrieve the external attributes of an entry defined by its index
  
  Retrieve the external attributes of an entry defined by its index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry.
  <info>int</info>  <strong>$opsys</strong>  On success, receive the operating system code defined by one of the
               ZipArchive::OPSYS_ constants.
  <info>int</info>  <strong>$attr</strong>   On success, receive the external attributes. Value depends on operating system.
  <info>int</info>  <strong>$flags</strong>  If flags is set to <info>ZipArchive::FL_UNCHANGED</info>, the original unchanged attributes are
               returned.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::getExternalAttributesName
type: function
doc:
<comment>Description:</comment>
  Retrieve the external attributes of an entry defined by its name
  
  Retrieve the external attributes of an entry defined by its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>   Name of the entry.
  <info>int</info>     <strong>$opsys</strong>  On success, receive the operating system code defined by one of the
                  ZipArchive::OPSYS_ constants.
  <info>int</info>     <strong>$attr</strong>   On success, receive the external attributes. Value depends on operating system.
  <info>int</info>     <strong>$flags</strong>  If flags is set to <info>ZipArchive::FL_UNCHANGED</info>, the original unchanged attributes are
                  returned.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::getFromIndex
type: function
doc:
<comment>Description:</comment>
  Returns the entry contents using its index
  
  Returns the entry contents using its index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry
  <info>int</info>  <strong>$len</strong>    The length to be read from the entry. If <return>0</return>, then the entire entry is read.
  <info>int</info>  <strong>$flags</strong>  The flags to use to open the archive. the following values may be ORed to it.
               <info>ZipArchive::FL_UNCHANGED</info><info>ZipArchive::FL_COMPRESSED</info>
               
               <info>ZipArchive::FL_UNCHANGED</info>
               
               <info>ZipArchive::FL_COMPRESSED</info>

<comment>Return:</comment>
  <info>string|false</info>  Returns the contents of the entry on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * ZipArchive::getFromName


id: ZipArchive::getFromName
type: function
doc:
<comment>Description:</comment>
  Returns the entry contents using its name
  
  Returns the entry contents using its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>   Name of the entry
  <info>int</info>     <strong>$len</strong>    The length to be read from the entry. If <return>0</return>, then the entire entry is read.
  <info>int</info>     <strong>$flags</strong>  The flags to use to find the entry. The following values may be ORed.
                  <info>ZipArchive::FL_UNCHANGED</info><info>ZipArchive::FL_COMPRESSED</info><info>ZipArchive::FL_NOCASE</info>
                  
                  <info>ZipArchive::FL_UNCHANGED</info>
                  
                  <info>ZipArchive::FL_COMPRESSED</info>
                  
                  <info>ZipArchive::FL_NOCASE</info>

<comment>Return:</comment>
  <info>string|false</info>  Returns the contents of the entry on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * ZipArchive::getFromIndex


id: ZipArchive::getNameIndex
type: function
doc:
<comment>Description:</comment>
  Returns the name of an entry using its index
  
  Returns the name of an entry using its index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry.
  <info>int</info>  <strong>$flags</strong>  If flags is set to <info>ZipArchive::FL_UNCHANGED</info>, the original unchanged name is returned.

<comment>Return:</comment>
  <info>string|false</info>  Returns the name on success 或者在失败时返回 <info>false</info>.


id: ZipArchive::getStatusString
type: function
doc:
<comment>Description:</comment>
  Returns the status error message, system and/or zip messages
  
  Returns the status error message, system and/or zip messages.

<comment>Return:</comment>
  <info>string</info>  Returns a <info>string</info> with the status message.


id: ZipArchive::getStream
type: function
doc:
<comment>Description:</comment>
  Get a file handler to the entry defined by its name (read only)
  
  Get a file handler to the entry defined by its name. For now, it only supports read operations.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  The name of the entry to use.

<comment>Return:</comment>
  <info>resource|false</info>  Returns a file pointer (resource) on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * ZipArchive::getStreamIndex
   * ZipArchive::getStreamName
   * Compression Streams


id: ZipArchive::getStreamIndex
type: function
doc:
<comment>Description:</comment>
  Get a file handler to the entry defined by its index (read only)
  
  Get a file handler to the entry defined by its index. For now, it only supports read operations.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry
  <info>int</info>  <strong>$flags</strong>  If flags is set to <info>ZipArchive::FL_UNCHANGED</info>, the original unchanged stream is
               returned.

<comment>Return:</comment>
  <info>resource|false</info>  Returns a file pointer (resource) on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * ZipArchive::getStreamName


id: ZipArchive::getStreamName
type: function
doc:
<comment>Description:</comment>
  Get a file handler to the entry defined by its name (read only)
  
  Get a file handler to the entry defined by its name. For now, it only supports read operations.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>   The name of the entry to use.
  <info>int</info>     <strong>$flags</strong>  If flags is set to <info>ZipArchive::FL_UNCHANGED</info>, the original unchanged stream is
                  returned.

<comment>Return:</comment>
  <info>resource|false</info>  Returns a file pointer (resource) on success 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * ZipArchive::getStreamIndex


id: ZipArchive::isCompressionMethodSupported
type: function
doc:
<comment>Description:</comment>
  Check if a compression method is supported by libzip
  
  Check if a compression method is supported by libzip.

<comment>Param:</comment>
  <info>int</info>   <strong>$method</strong>  The compression method, one of the <info>ZipArchive::CM_*</info> constants.
  <info>bool</info>  <strong>$enc</strong>     If <info>true</info> check for compression, else check for decompression.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::setCompressionIndex
   * ZipArchive::setCompressionName


id: ZipArchive::isEncryptionMethodSupported
type: function
doc:
<comment>Description:</comment>
  Check if a encryption method is supported by libzip
  
  Check if a compression method is supported by libzip.

<comment>Param:</comment>
  <info>int</info>   <strong>$method</strong>  The encryption method, one of the <info>ZipArchive::EM_*</info> constants.
  <info>bool</info>  <strong>$enc</strong>     If <info>true</info> check for encryption, else check for decryption.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::setEncryptionIndex
   * ZipArchive::setEncryptionName


id: ZipArchive::locateName
type: function
doc:
<comment>Description:</comment>
  Returns the index of the entry in the archive
  
  Locates an entry using its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>   The name of the entry to look up
  <info>int</info>     <strong>$flags</strong>  The flags are specified by ORing the following values, or 0 for none of them.
                  <info>ZipArchive::FL_NOCASE</info><info>ZipArchive::FL_NODIR</info>
                  
                  <info>ZipArchive::FL_NOCASE</info>
                  
                  <info>ZipArchive::FL_NODIR</info>

<comment>Return:</comment>
  <info>int|false</info>  Returns the index of the entry on success 或者在失败时返回 <info>false</info>.


id: ZipArchive::open
type: function
doc:
<comment>Description:</comment>
  Open a ZIP file archive
  
  Opens a new or existing zip archive for reading, writing or modifying.
  
  Since libzip 1.6.0, an empty file is not a valid archive any longer.

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  The file name of the ZIP archive to open.
  <info>int</info>     <strong>$flags</strong>     The mode to use to open the archive.
                     <info>ZipArchive::OVERWRITE</info><info>ZipArchive::CREATE</info><info>ZipArchive::RDONLY</info><info>ZipArchive::EXCL</info><info>ZipArchive::CHECKCONS</info>
                     
                     <info>ZipArchive::OVERWRITE</info>
                     
                     <info>ZipArchive::CREATE</info>
                     
                     <info>ZipArchive::RDONLY</info>
                     
                     <info>ZipArchive::EXCL</info>
                     
                     <info>ZipArchive::CHECKCONS</info>

<comment>Return:</comment>
  <info>bool|int</info>  Returns <info>true</info> on success, <info>false</info> or one of the following error codes on error:
            <info>ZipArchive::ER_EXISTS</info>File already exists.<info>ZipArchive::ER_INCONS</info>Zip archive
            inconsistent.<info>ZipArchive::ER_INVAL</info>Invalid argument.<info>ZipArchive::ER_MEMORY</info>Malloc
            failure.<info>ZipArchive::ER_NOENT</info>No such file.<info>ZipArchive::ER_NOZIP</info>Not a zip
            archive.<info>ZipArchive::ER_OPEN</info>Can't open file.<info>ZipArchive::ER_READ</info>Read
            error.<info>ZipArchive::ER_SEEK</info>Seek error.
            
            File already exists.
            
            Zip archive inconsistent.
            
            Invalid argument.
            
            Malloc failure.
            
            No such file.
            
            Not a zip archive.
            
            Can't open file.
            
            Read error.
            
            Seek error.


id: ZipArchive::registerCancelCallback
type: function
doc:
<comment>Description:</comment>
  Register a callback to allow cancellation during archive close.
  
  Register a <strong>$callback</strong> function to allow cancellation during archive close.

<comment>Param:</comment>
  <info>callable</info>  <strong>$callback</strong>  If this function return 0 operation will continue, other value it will be
                       cancelled.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::registerProgressCallback


id: ZipArchive::registerProgressCallback
type: function
doc:
<comment>Description:</comment>
  Register a callback to provide updates during archive close.
  
  Register a <strong>$callback</strong> function to provide updates during archive close.

<comment>Param:</comment>
  <info>float</info>     <strong>$rate</strong>      Change between each call of the callback (from 0.0 to 1.0).
  <info>callable</info>  <strong>$callback</strong>  This function will receive the current <strong>$state</strong> as a <info>float</info> (from 0.0 to 1.0).

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::registerCancelCallback


id: ZipArchive::renameIndex
type: function
doc:
<comment>Description:</comment>
  Renames an entry defined by its index
  
  Renames an entry defined by its index.

<comment>Param:</comment>
  <info>int</info>     <strong>$index</strong>     Index of the entry to rename.
  <info>string</info>  <strong>$new_name</strong>  New name.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::renameName
type: function
doc:
<comment>Description:</comment>
  Renames an entry defined by its name
  
  Renames an entry defined by its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>      Name of the entry to rename.
  <info>string</info>  <strong>$new_name</strong>  New name.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::replaceFile
type: function
doc:
<comment>Description:</comment>
  Replace file in ZIP archive with a given path
  
  Replace file in ZIP archive with a given path.
  
  为了最大限度地提高代码可移植性，建议在 ZIP 文件名中使用斜线 (<return>/</return>) 做为目录分隔符。

<comment>Param:</comment>
  <info>string</info>  <strong>$filepath</strong>  The path to the file to add.
  <info>int</info>     <strong>$index</strong>     The index of the file to be replaced, its name is unchanged.
  <info>int</info>     <strong>$start</strong>     For partial copy, start position.
  <info>int</info>     <strong>$length</strong>    For partial copy, length to be copied, if <info>ZipArchive::LENGTH_TO_END</info> (0) the
                     file size is used, if <info>ZipArchive::LENGTH_UNCHECKED</info> the whole file is used
                     (starting from <strong>$start</strong>).
  <info>int</info>     <strong>$flags</strong>     Bitmask consisting of <info>ZipArchive::FL_ENC_GUESS</info>, <info>ZipArchive::FL_ENC_UTF_8</info>,
                     <info>ZipArchive::FL_ENC_CP437</info>, <info>ZipArchive::FL_OPEN_FILE_NOW</info>. The behaviour of these
                     constants is described on the ZIP constants page.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::addFile


id: ZipArchive::setArchiveComment
type: function
doc:
<comment>Description:</comment>
  Set the comment of a ZIP archive
  
  Set the comment of a ZIP archive.

<comment>Param:</comment>
  <info>string</info>  <strong>$comment</strong>  The contents of the comment.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::setArchiveFlag
type: function
doc:
<comment>Description:</comment>
  设置 ZIP 归档的全局 flag
  
  设置 ZIP 归档的全局 flag。

<comment>Param:</comment>
  <info>int</info>  <strong>$flag</strong>   要改变的全局 flag，包含 <return>AFL_*</return> 常量。
               <info>ZipArchive::AFL_WANT_TORRENTZIP</info><info>ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE</info>
               
               <info>ZipArchive::AFL_WANT_TORRENTZIP</info>
               
               <info>ZipArchive::AFL_CREATE_OR_KEEP_FILE_FOR_EMPTY_ARCHIVE</info>
  <info>int</info>  <strong>$value</strong>  flag 的新值。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::getArchiveFlag


id: ZipArchive::setCommentIndex
type: function
doc:
<comment>Description:</comment>
  Set the comment of an entry defined by its index
  
  Set the comment of an entry defined by its index.

<comment>Param:</comment>
  <info>int</info>     <strong>$index</strong>    Index of the entry.
  <info>string</info>  <strong>$comment</strong>  The contents of the comment.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::setCommentName
type: function
doc:
<comment>Description:</comment>
  Set the comment of an entry defined by its name
  
  Set the comment of an entry defined by its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>     Name of the entry.
  <info>string</info>  <strong>$comment</strong>  The contents of the comment.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::setCompressionIndex
type: function
doc:
<comment>Description:</comment>
  Set the compression method of an entry defined by its index
  
  Set the compression method of an entry defined by its index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>      Index of the entry.
  <info>int</info>  <strong>$method</strong>     The compression method, one of the <info>ZipArchive::CM_*</info> constants.
  <info>int</info>  <strong>$compflags</strong>  Compression level.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::setCompressionName
type: function
doc:
<comment>Description:</comment>
  Set the compression method of an entry defined by its name
  
  Set the compression method of an entry defined by its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>       Name of the entry.
  <info>int</info>     <strong>$method</strong>     The compression method, one of the <info>ZipArchive::CM_*</info> constants.
  <info>int</info>     <strong>$compflags</strong>  Compression level.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::setEncryptionIndex
type: function
doc:
<comment>Description:</comment>
  Set the encryption method of an entry defined by its index
  
  Set the encryption method of an entry defined by its index.

<comment>Param:</comment>
  <info>int</info>          <strong>$index</strong>     Index of the entry.
  <info>int</info>          <strong>$method</strong>    The encryption method defined by one of the ZipArchive::EM_ constants.
  <info>string|null</info>  <strong>$password</strong>  Optional password, default used when missing.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::setPassword
   * ZipArchive::setEncryptionName


id: ZipArchive::setEncryptionName
type: function
doc:
<comment>Description:</comment>
  Set the encryption method of an entry defined by its name
  
  Set the encryption method of an entry defined by its name.

<comment>Param:</comment>
  <info>string</info>       <strong>$name</strong>      Name of the entry.
  <info>int</info>          <strong>$method</strong>    The encryption method defined by one of the ZipArchive::EM_ constants.
  <info>string|null</info>  <strong>$password</strong>  Optional password, default used when missing.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::setPassword
   * ZipArchive::setEncryptionIndex


id: ZipArchive::setExternalAttributesIndex
type: function
doc:
<comment>Description:</comment>
  Set the external attributes of an entry defined by its index
  
  Set the external attributes of an entry defined by its index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry.
  <info>int</info>  <strong>$opsys</strong>  The operating system code defined by one of the ZipArchive::OPSYS_ constants.
  <info>int</info>  <strong>$attr</strong>   The external attributes. Value depends on operating system.
  <info>int</info>  <strong>$flags</strong>  Optional flags. Currently unused.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::setExternalAttributesName
type: function
doc:
<comment>Description:</comment>
  Set the external attributes of an entry defined by its name
  
  Set the external attributes of an entry defined by its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>   Name of the entry.
  <info>int</info>     <strong>$opsys</strong>  The operating system code defined by one of the ZipArchive::OPSYS_ constants.
  <info>int</info>     <strong>$attr</strong>   The external attributes. Value depends on operating system.
  <info>int</info>     <strong>$flags</strong>  Optional flags. Currently unused.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::setMtimeIndex
type: function
doc:
<comment>Description:</comment>
  Set the modification time of an entry defined by its index
  
  Set the modification time of an entry defined by its index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>      Index of the entry.
  <info>int</info>  <strong>$timestamp</strong>  The modification time (unix timestamp) of the file.
  <info>int</info>  <strong>$flags</strong>      Optional flags, unused for now.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::setMtimeName


id: ZipArchive::setMtimeName
type: function
doc:
<comment>Description:</comment>
  Set the modification time of an entry defined by its name
  
  Set the modification time of an entry defined by its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>       Name of the entry.
  <info>int</info>     <strong>$timestamp</strong>  The modification time (unix timestamp) of the file.
  <info>int</info>     <strong>$flags</strong>      Optional flags, unused for now.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::setMtimeIndex


id: ZipArchive::setPassword
type: function
doc:
<comment>Description:</comment>
  Set the password for the active archive
  
  Sets the password for the active archive.

<comment>Param:</comment>
  <info>string</info>  <strong>$password</strong>  The password to be used for the archive.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZipArchive::setEncryptionIndex
   * ZipArchive::setEncryptionName


id: ZipArchive::statIndex
type: function
doc:
<comment>Description:</comment>
  Get the details of an entry defined by its index
  
  The  function  obtains  information  about the entry defined by its index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry
  <info>int</info>  <strong>$flags</strong>  <info>ZipArchive::FL_UNCHANGED</info> may be ORed to it to request information  about  the
               original  file  in  the archive, ignoring any changes made.

<comment>Return:</comment>
  <info>array|false</info>  Returns an array containing the entry details 或者在失败时返回 <info>false</info>.


id: ZipArchive::statName
type: function
doc:
<comment>Description:</comment>
  Get the details of an entry defined by its name
  
  The function obtains information about the entry defined by its name.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>   Name of the entry
  <info>int</info>     <strong>$flags</strong>  The flags argument specifies how the name lookup should be done. Also,
                  <info>ZipArchive::FL_UNCHANGED</info> may be ORed to it to request information  about  the
                  original  file  in  the archive, ignoring any changes made.
                  <info>ZipArchive::FL_NOCASE</info><info>ZipArchive::FL_NODIR</info><info>ZipArchive::FL_UNCHANGED</info>
                  
                  <info>ZipArchive::FL_NOCASE</info>
                  
                  <info>ZipArchive::FL_NODIR</info>
                  
                  <info>ZipArchive::FL_UNCHANGED</info>

<comment>Return:</comment>
  <info>array|false</info>  Returns an array containing the entry details  或者在失败时返回 <info>false</info>.


id: ZipArchive::unchangeAll
type: function
doc:
<comment>Description:</comment>
  Undo all changes done in the archive
  
  Undo all changes done in the archive.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::unchangeArchive
type: function
doc:
<comment>Description:</comment>
  Revert all global changes done in the archive
  
  Revert all global changes to the archive.  For now, this only reverts archive comment changes.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::unchangeIndex
type: function
doc:
<comment>Description:</comment>
  Revert all changes done to an entry at the given index
  
  Revert all changes done to an entry at the given index.

<comment>Param:</comment>
  <info>int</info>  <strong>$index</strong>  Index of the entry.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: ZipArchive::unchangeName
type: function
doc:
<comment>Description:</comment>
  Revert all changes done to an entry with the given name
  
  Revert all changes done to an entry.

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  Name of the entry.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: Zookeeper::APIERROR
type: constant
doc:
<comment>Description:</comment>
  This is never thrown by the server, it shouldn't be used other than to indicate a range.
  Specifically error codes greater than this value are API errors (while values less than this
  indicate a Zookeeper::SYSTEMERROR).


id: Zookeeper::CHANGED_EVENT
type: constant
doc:
<comment>Description:</comment>
  A node has changed
  
  This is only generated by watches on nodes. These watches are set using Zookeeper::exists and
  Zookeeper::get.


id: Zookeeper::CHILD_EVENT
type: constant
doc:
<comment>Description:</comment>
  A change as occurred in the list of children
  
  This is only generated by watches on the child list of a node. These watches are set using
  Zookeeper::getChildren.


id: Zookeeper::CREATED_EVENT
type: constant
doc:
<comment>Description:</comment>
  A node has been created
  
  This is only generated by watches on non-existent nodes. These watches are set using
  Zookeeper::exists.


id: Zookeeper::DELETED_EVENT
type: constant
doc:
<comment>Description:</comment>
  A node has been deleted
  
  This is only generated by watches on nodes. These watches are set using Zookeeper::exists and
  Zookeeper::get.


id: Zookeeper::EPHEMERAL
type: constant
doc:
<comment>Description:</comment>
  If Zookeeper::EPHEMERAL flag is set, the node will automatically get removed if the client session
  goes away.


id: Zookeeper::NEWCONFIGNOQUORUM
type: constant
doc:
<comment>Description:</comment>
  No quorum of new config is connected and up-to-date with the leader of last committed config - try
  invoking reconfiguration after new servers are connected and synced.
  
  Available as of ZooKeeper 3.5.0


id: Zookeeper::NOTWATCHING_EVENT
type: constant
doc:
<comment>Description:</comment>
  A watch has been removed
  
  This is generated when the server for some reason, probably a resource constraint, will no longer
  watch a node for a client.


id: Zookeeper::RECONFIGDISABLED
type: constant
doc:
<comment>Description:</comment>
  Attempts to perform a reconfiguration operation when reconfiguration feature is disabled.


id: Zookeeper::RECONFIGINPROGRESS
type: constant
doc:
<comment>Description:</comment>
  Reconfiguration requested while another reconfiguration is currently in progress. This is
  currently not supported. Please retry.
  
  Available as of ZooKeeper 3.5.0


id: Zookeeper::SEQUENCE
type: constant
doc:
<comment>Description:</comment>
  If the Zookeeper::SEQUENCE flag is set, a unique monotonically increasing sequence number is
  appended to the path name. The sequence number is always fixed length of 10 digits, 0 padded.


id: Zookeeper::SESSION_EVENT
type: constant
doc:
<comment>Description:</comment>
  A session has been lost
  
  This is generated when a client loses contact or reconnects with a server.


id: Zookeeper::SYSTEMERROR
type: constant
doc:
<comment>Description:</comment>
  This is never thrown by the server, it shouldn't be used other than to indicate a range.
  Specifically error codes greater than this value, but lesser than Zookeeper::APIERROR, are system
  errors.


id: Zookeeper::__construct
type: function
doc:
<comment>Description:</comment>
  Create a handle to used communicate with zookeeper
  
  This method creates a new handle and a zookeeper session that corresponds to that handle. Session
  establishment is asynchronous, meaning that the session should not be considered established until
  (and unless) an event of state ZOO_CONNECTED_STATE is received.

<comment>Param:</comment>
  <info>string</info>    <strong>$host</strong>          comma separated host:port pairs, each corresponding to a zk server. e.g.
                           "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
  <info>callable</info>  <strong>$watcher_cb</strong>    the global watcher callback function. When notifications are triggered
                           this function will be invoked.
  <info>int</info>       <strong>$recv_timeout</strong>  the timeout for this session, only valid if the connections is currently
                           connected (ie. last watcher state is ZOO_CONNECTED_STATE).

<comment>See Also:</comment>
   * Zookeeper::connect
   * <class>ZookeeperException</class>


id: Zookeeper::addAuth
type: function
doc:
<comment>Description:</comment>
  Specify application credentials
  
  The application calls this function to specify its credentials for purposes of authentication. The
  server will use the security provider specified by the scheme parameter to authenticate the client
  connection. If the authentication request has failed: - the server connection is dropped. - the
  watcher is called with the ZOO_AUTH_FAILED_STATE value as the state parameter.

<comment>Param:</comment>
  <info>string</info>    <strong>$scheme</strong>         The id of authentication scheme. Natively supported: "digest"
                            password-based authentication
  <info>string</info>    <strong>$cert</strong>           Application credentials. The actual value depends on the scheme.
  <info>callable</info>  <strong>$completion_cb</strong>  The routine to invoke when the request completes. One of the following
                            result codes may be passed into the completion callback: - ZOK operation
                            completed successfully - ZAUTHFAILED authentication failed

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * Zookeeper::create
   * Zookeeper::setAcl
   * Zookeeper::getAcl
   * ZooKeeper States
   * <class>ZookeeperException</class>


id: Zookeeper::close
type: function
doc:
<comment>Description:</comment>
  Close the zookeeper handle and free up any resources

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * Zookeeper::__construct
   * Zookeeper::connect
   * <class>ZookeeperException</class>


id: Zookeeper::connect
type: function
doc:
<comment>Description:</comment>
  Create a handle to used communicate with zookeeper
  
  This method creates a new handle and a zookeeper session that corresponds to that handle. Session
  establishment is asynchronous, meaning that the session should not be considered established until
  (and unless) an event of state ZOO_CONNECTED_STATE is received.

<comment>Param:</comment>
  <info>string</info>    <strong>$host</strong>          Comma separated host:port pairs, each corresponding to a zk server. e.g.
                           "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
  <info>callable</info>  <strong>$watcher_cb</strong>    The global watcher callback function. When notifications are triggered
                           this function will be invoked.
  <info>int</info>       <strong>$recv_timeout</strong>  The timeout for this session, only valid if the connections is currently
                           connected (ie. last watcher state is ZOO_CONNECTED_STATE).

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * Zookeeper::__construct
   * <class>ZookeeperException</class>


id: Zookeeper::create
type: function
doc:
<comment>Description:</comment>
  Create a node synchronously
  
  This method will create a node in ZooKeeper. A node can only be created if it does not already
  exists. The Create Flags affect the creation of nodes. If ZOO_EPHEMERAL flag is set, the node will
  automatically get removed if the client session goes away. If the ZOO_SEQUENCE flag is set, a
  unique monotonically increasing sequence number is appended to the path name.

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>   The name of the node. Expressed as a file name with slashes separating ancestors
                  of the node.
  <info>string</info>  <strong>$value</strong>  The data to be stored in the node.
  <info>array</info>   <strong>$acls</strong>   The initial ACL of the node. The ACL must not be null or empty.
  <info>int</info>     <strong>$flags</strong>  this parameter can be set to 0 for normal create or an OR of the Create Flags

<comment>Return:</comment>
  <info>string</info>  Returns the path of the new node (this might be different than the supplied path because
          of the ZOO_SEQUENCE flag) on success, and false on failure.

<comment>See Also:</comment>
   * Zookeeper::delete
   * Zookeeper::getChildren
   * ZooKeeper Permissions
   * <class>ZookeeperException</class>


id: Zookeeper::delete
type: function
doc:
<comment>Description:</comment>
  Delete a node in zookeeper synchronously

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>     The name of the node. Expressed as a file name with slashes separating ancestors
                    of the node.
  <info>int</info>     <strong>$version</strong>  The expected version of the node. The function will fail if the actual version
                    of the node does not match the expected version. If -1 is used the version check
                    will not take place.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * Zookeeper::create
   * Zookeeper::getChildren
   * <class>ZookeeperException</class>


id: Zookeeper::exists
type: function
doc:
<comment>Description:</comment>
  Checks the existence of a node in zookeeper synchronously

<comment>Param:</comment>
  <info>string</info>    <strong>$path</strong>        The name of the node. Expressed as a file name with slashes separating
                         ancestors of the node.
  <info>callable</info>  <strong>$watcher_cb</strong>  if nonzero, a watch will be set at the server to notify the client if the
                         node changes. The watch will be set even if the node does not

<comment>Return:</comment>
  <info>array</info>  Returns the value of stat for the path if the given node exists, otherwise false.

<comment>See Also:</comment>
   * Zookeeper::get
   * <class>ZookeeperException</class>


id: Zookeeper::get
type: function
doc:
<comment>Description:</comment>
  Gets the data associated with a node synchronously

<comment>Param:</comment>
  <info>string</info>    <strong>$path</strong>        The name of the node. Expressed as a file name with slashes separating
                         ancestors of the node.
  <info>callable</info>  <strong>$watcher_cb</strong>  If nonzero, a watch will be set at the server to notify the client if the
                         node changes.
  <info>array</info>     <strong>$stat</strong>        If not NULL, will hold the value of stat for the path on return.
  <info>int</info>       <strong>$max_size</strong>    Max size of the data. If 0 is used, this method will return the whole data.

<comment>Return:</comment>
  <info>string</info>  Returns the data on success, and false on failure.

<comment>See Also:</comment>
   * Zookeeper::set
   * <class>ZookeeperException</class>


id: Zookeeper::getAcl
type: function
doc:
<comment>Description:</comment>
  Gets the acl associated with a node synchronously

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>  The name of the node. Expressed as a file name with slashes separating ancestors of
                 the node.

<comment>Return:</comment>
  <info>array</info>  Return acl array on success and false on failure.

<comment>See Also:</comment>
   * Zookeeper::create
   * Zookeeper::setAcl
   * ZooKeeper Permissions
   * <class>ZookeeperException</class>


id: Zookeeper::getChildren
type: function
doc:
<comment>Description:</comment>
  Lists the children of a node synchronously

<comment>Param:</comment>
  <info>string</info>    <strong>$path</strong>        The name of the node. Expressed as a file name with slashes separating
                         ancestors of the node.
  <info>callable</info>  <strong>$watcher_cb</strong>  If nonzero, a watch will be set at the server to notify the client if the
                         node changes.

<comment>Return:</comment>
  <info>array</info>  Returns an array with children paths on success, and false on failure.

<comment>See Also:</comment>
   * Zookeeper::create
   * Zookeeper::delete
   * <class>ZookeeperException</class>


id: Zookeeper::getClientId
type: function
doc:
<comment>Description:</comment>
  Return the client session id, only valid if the connections is currently connected (ie. last
  watcher
  state is ZOO_CONNECTED_STATE)

<comment>Return:</comment>
  <info>int</info>  Returns the client session id on success, and false on failure.

<comment>See Also:</comment>
   * Zookeeper::__construct
   * Zookeeper::connect
   * Zookeeper::getState
   * ZooKeeper States
   * <class>ZookeeperException</class>


id: Zookeeper::getConfig
type: function
doc:
<comment>Description:</comment>
  Get instance of ZookeeperConfig

<comment>Return:</comment>
  <info>ZookeeperConfig</info>  Returns instance of <class>ZookeeperConfig</class>.

<comment>See Also:</comment>
   * <class>ZookeeperConfig</class>


id: Zookeeper::getRecvTimeout
type: function
doc:
<comment>Description:</comment>
  Return the timeout for this session, only valid if the connections is currently connected (ie.
  last
  watcher state is ZOO_CONNECTED_STATE). This value may change after a server re-connect

<comment>Return:</comment>
  <info>int</info>  Returns the timeout for this session on success, and false on failure.

<comment>See Also:</comment>
   * Zookeeper::__construct
   * Zookeeper::connect
   * <class>ZookeeperException</class>


id: Zookeeper::getState
type: function
doc:
<comment>Description:</comment>
  Get the state of the zookeeper connection

<comment>Return:</comment>
  <info>int</info>  Returns the state of zookeeper connection on success, and false on failure.

<comment>See Also:</comment>
   * Zookeeper::__construct
   * Zookeeper::connect
   * Zookeeper::getClientId
   * ZooKeeper States
   * <class>ZookeeperException</class>


id: Zookeeper::isRecoverable
type: function
doc:
<comment>Description:</comment>
  Checks if the current zookeeper connection state can be recovered
  
  The application must close the handle and try to reconnect.

<comment>Return:</comment>
  <info>bool</info>  Returns true/false on success, and false on failure.

<comment>See Also:</comment>
   * Zookeeper::__construct
   * Zookeeper::connect
   * Zookeeper::getClientId
   * ZooKeeper States
   * <class>ZookeeperException</class>


id: Zookeeper::set
type: function
doc:
<comment>Description:</comment>
  Sets the data associated with a node

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>     The name of the node. Expressed as a file name with slashes separating ancestors
                    of the node.
  <info>string</info>  <strong>$value</strong>    The data to be stored in the node.
  <info>int</info>     <strong>$version</strong>  The expected version of the node. The function will fail if the actual version
                    of the node does not match the expected version. If -1 is used the version check
                    will not take place.
  <info>array</info>   <strong>$stat</strong>     If not NULL, will hold the value of stat for the path on return.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * Zookeeper::create
   * Zookeeper::get
   * <class>ZookeeperException</class>


id: Zookeeper::setAcl
type: function
doc:
<comment>Description:</comment>
  Sets the acl associated with a node synchronously

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>     The name of the node. Expressed as a file name with slashes separating ancestors
                    of the node.
  <info>int</info>     <strong>$version</strong>  The expected version of the path.
  <info>array</info>   <strong>$acl</strong>      The acl to be set on the path.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * Zookeeper::create
   * Zookeeper::getAcl
   * ZooKeeper Permissions
   * <class>ZookeeperException</class>


id: Zookeeper::setDebugLevel
type: function
doc:
<comment>Description:</comment>
  Sets the debugging level for the library

<comment>Param:</comment>
  <info>int</info>  <strong>$logLevel</strong>  ZooKeeper log level constants.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * ZooKeeper Log Levels
   * <class>ZookeeperException</class>


id: Zookeeper::setDeterministicConnOrder
type: function
doc:
<comment>Description:</comment>
  Enable/disable quorum endpoint order randomization
  
  If passed a true value, will make the client connect to quorum peers in the order as specified in
  the zookeeper_init() call. A false value causes zookeeper_init() to permute the peer endpoints
  which is good for more even client connection distribution among the quorum peers. ZooKeeper C
  Client uses false by default.

<comment>Param:</comment>
  <info>bool</info>  <strong>$yesOrNo</strong>  Disable/enable quorum endpoint order randomization.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * Zookeeper::__construct
   * Zookeeper::connect
   * <class>ZookeeperException</class>


id: Zookeeper::setLogStream
type: function
doc:
<comment>Description:</comment>
  Sets the stream to be used by the library for logging
  
  The zookeeper library uses stderr as its default log stream. Application must make sure the stream
  is writable. Passing in NULL resets the stream to its default value (stderr).

<comment>Param:</comment>
  <info>resource</info>  <strong>$stream</strong>  The stream to be used by the library for logging.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * Zookeeper::setDebugLevel
   * <class>ZookeeperException</class>


id: Zookeeper::setWatcher
type: function
doc:
<comment>Description:</comment>
  Set a watcher function

<comment>Param:</comment>
  <info>callable</info>  <strong>$watcher_cb</strong>  A watch will be set at the server to notify the client if the node changes.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * Zookeeper::exists
   * Zookeeper::get
   * <class>ZookeeperException</class>


id: ZookeeperConfig::add
type: function
doc:
<comment>Description:</comment>
  Add servers to the ensemble

<comment>Param:</comment>
  <info>string</info>  <strong>$members</strong>  Comma separated list of servers to be added to the ensemble. Each has a
                    configuration line for a server to be added (as would appear in a configuration
                    file), only for maj. quorums.
  <info>int</info>     <strong>$version</strong>  The expected version of the node. The function will fail if the actual version
                    of the node does not match the expected version. If -1 is used the version check
                    will not take place.
  <info>array</info>   <strong>$stat</strong>     If not NULL, will hold the value of stat for the path on return.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * ZookeeperConfig::get
   * ZookeeperConfig::set
   * ZookeeperConfig::remove
   * <class>ZookeeperException</class>


id: ZookeeperConfig::get
type: function
doc:
<comment>Description:</comment>
  Gets the last committed configuration of the ZooKeeper cluster as it is known to the server to
  which
  the client is connected, synchronously

<comment>Param:</comment>
  <info>callable</info>  <strong>$watcher_cb</strong>  If nonzero, a watch will be set at the server to notify the client if the
                         node changes.
  <info>array</info>     <strong>$stat</strong>        If not NULL, will hold the value of stat for the path on return.

<comment>Return:</comment>
  <info>string</info>  Returns the configuration string on success, and false on failure.

<comment>See Also:</comment>
   * ZookeeperConfig::set
   * ZookeeperConfig::add
   * ZookeeperConfig::remove
   * <class>ZookeeperException</class>


id: ZookeeperConfig::remove
type: function
doc:
<comment>Description:</comment>
  Remove servers from the ensemble

<comment>Param:</comment>
  <info>string</info>  <strong>$id_list</strong>  Comma separated list of server IDs to be removed from the ensemble. Each has an
                    id of a server to be removed, only for maj. quorums.
  <info>int</info>     <strong>$version</strong>  The expected version of the node. The function will fail if the actual version
                    of the node does not match the expected version. If -1 is used the version check
                    will not take place.
  <info>array</info>   <strong>$stat</strong>     If not NULL, will hold the value of stat for the path on return.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * ZookeeperConfig::get
   * ZookeeperConfig::add
   * ZookeeperConfig::set
   * <class>ZookeeperException</class>


id: ZookeeperConfig::set
type: function
doc:
<comment>Description:</comment>
  Change ZK cluster ensemble membership and roles of ensemble peers

<comment>Param:</comment>
  <info>string</info>  <strong>$members</strong>  Comma separated list of new membership (e.g., contents of a membership
                    configuration file) - for use only with a non-incremental reconfiguration.
  <info>int</info>     <strong>$version</strong>  The expected version of the node. The function will fail if the actual version
                    of the node does not match the expected version. If -1 is used the version check
                    will not take place.
  <info>array</info>   <strong>$stat</strong>     If not NULL, will hold the value of stat for the path on return.

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * ZookeeperConfig::get
   * ZookeeperConfig::add
   * ZookeeperConfig::remove
   * <class>ZookeeperException</class>


id: ZookeeperMarshallingException
type: class
doc:
<comment>Description:</comment>
  The ZooKeeper exception (while marshalling or unmarshalling data) handling class.


id: ZookeeperNoNodeException
type: class
doc:
<comment>Description:</comment>
  The ZooKeeper exception (when node does not exist) handling class.


id: __CLASS__
type: constant
doc:
<comment>Description:</comment>
  当前类的名称。类名包括其被声明的作用域（例如 <return>Foo\Bar</return>）。当用在 trait 方法中时，__CLASS__ 是调用
  trait 方法的类的名字。


id: __DIR__
type: constant
doc:
<comment>Description:</comment>
  文件所在的目录。如果用在被包括文件中，则返回被包括的文件所在的目录。它等价于 <return>dirname(__FILE__)</return>。除
  非是根目录，否则目录中名不包括末尾的斜杠。


id: __autoload
type: function
doc:
<comment>Description:</comment>
  尝试加载未定义的类
  
  你可以通过定义这个函数来启用类的自动加载。

<comment>Param:</comment>
  <info>string</info>  <strong>$class</strong>  待加载的类名。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>spl_autoload_register()</strong>


id: __halt_compiler
type: function
doc:
<comment>Description:</comment>
  中断编译器的执行
    
  
  中断编译器的执行。常用于在 PHP 脚本内嵌入数据，类似于安装文件。
  
  可以通过常量 <info>__COMPILER_HALT_OFFSET__</info> 获取数据开始字节所在的位置，且该常量仅被定义于使用了
  <strong>__halt_compiler()</strong> 的文件。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: abs
type: function
doc:
<comment>Description:</comment>
  绝对值
  
  返回参数 <strong>$num</strong> 的绝对值。

<comment>Param:</comment>
  <info>int|float</info>  <strong>$num</strong>  要处理的数字值

<comment>Return:</comment>
  <info>int|float</info>  <strong>$num</strong> 的绝对值。 如果参数 <strong>$num</strong> 是 <info>float</info>，则返回的类型也是 <info>float</info>，否则返回 <info>int</info>（因为
             <info>float</info> 通常比 <info>int</info> 有更大的取值范围）。

<comment>See Also:</comment>
   * <strong>gmp_abs()</strong>
   * <strong>gmp_sign()</strong>


id: acos
type: function
doc:
<comment>Description:</comment>
  反余弦
  
  返回 <strong>$num</strong> 的反余弦值，单位是弧度。<strong>acos()</strong> 是 <strong>cos()</strong> 的反函数，它的意思是对于 <strong>acos()</strong> 的定义域中的每个
  <strong>$num</strong> 值，$num == cos(acos($num))。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  要处理的参数

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 的反余弦弧度。

<comment>See Also:</comment>
   * <strong>cos()</strong>
   * <strong>acosh()</strong>
   * <strong>asin()</strong>
   * <strong>atan()</strong>


id: acosh
type: function
doc:
<comment>Description:</comment>
  反双曲余弦
  
  返回 <strong>$num</strong> 的反双曲余弦值，即其双曲余弦为 <strong>$num</strong> 的那个值。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  要处理的值

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 反双曲余弦

<comment>See Also:</comment>
   * <strong>cosh()</strong>
   * <strong>acos()</strong>
   * <strong>asinh()</strong>
   * <strong>atanh()</strong>


id: addcslashes
type: function
doc:
<comment>Description:</comment>
  以 C 语言风格使用反斜线转义字符串中的字符
  
  返回字符串，该字符串在属于参数 <strong>$characters</strong> 列表中的字符前都加上了反斜线。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>      要转义的字符。
  <info>string</info>  <strong>$characters</strong>  如果 <strong>$characters</strong> 中包含有 <return>\n</return>，<return>\r</return> 等字符，将以 C 语言风格转换，而其它非字母数
                       字且 ASCII 码低于 32 以及高于 126  的字符均转换成使用八进制表示。
                       
                       当定义 <strong>$characters</strong> 参数中的字符序列时，需要确保知道设置为开始及结束范围之内的
                       字符都是什么。
                       ]]> 另外，如果设置范围中的结束字符 ASCII  码高于开始字符，则不会创建范围，只
                       是将开始字符、结束字符以及其间的字符逐个转义。可使用 <strong>ord()</strong> 函数获取字符的
                       ASCII 码值。
                       ]]>
                       
                       当选择对字符 0，a，b，f，n，r，t 和 v 进行转义时需要小心。它们将被转换成 \0，
                       \a，\b，\f，\n，\r，\t 和 \v，这些在 C 中都是预定义的转义序列。其中一些序列也
                       在其它 C 派生语言（包含 PHP）中定义，这意味着如果使用 <strong>addcslashes()</strong> 和
                       <strong>$characters</strong> 中定义的字符输出生成语言的代码，将不会得到预期的结果。

<comment>Return:</comment>
  <info>string</info>  返回转义后的字符。

<comment>See Also:</comment>
   * <strong>stripcslashes()</strong>
   * <strong>stripslashes()</strong>
   * <strong>addslashes()</strong>
   * <strong>htmlspecialchars()</strong>
   * <strong>quotemeta()</strong>


id: addslashes
type: function
doc:
<comment>Description:</comment>
  使用反斜线引用字符串
  
  返回需要在转义字符之前添加反斜线的字符串。这些字符是： 单引号（<return>'</return>）双引号（<return>"</return>）反斜线（<return>\</return>）NUL（NUL
  字节）
  
  <strong>addslashes()</strong> 的一个用法就是转义由 PHP 执行字符串中的上述字符： 
  ]]>
  
  有时会错误的使用 <strong>addslashes()</strong> 来防止 SQL 注入。相反，应该使用数据库特定函数和/或预处理语句。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  要转义的字符。

<comment>Return:</comment>
  <info>string</info>  返回转义后的字符。

<comment>See Also:</comment>
   * <strong>stripcslashes()</strong>
   * <strong>stripslashes()</strong>
   * <strong>addcslashes()</strong>
   * <strong>htmlspecialchars()</strong>
   * <strong>quotemeta()</strong>
   * <strong>get_magic_quotes_gpc()</strong>


id: apache_child_terminate
type: function
doc:
<comment>Description:</comment>
  在本次请求结束后终止 apache 子进程
  
  <strong>apache_child_terminate()</strong> 将把运行当前 PHP 请求的 Apache 子进程注册为终止状态，一旦结束 PHP 代码的
  运行此进程将终止。可以用在占用大量内存的脚本后面来终止该进程，因为通常内存只在内部释放而不会还给操
  作系统。
  
  在 Apache 和 FastCGI 网页服务器中运行。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>exit()</strong>


id: apache_get_modules
type: function
doc:
<comment>Description:</comment>
  获得已加载的Apache模块列表
  
  获得已加载的Apache模块列表。

<comment>Return:</comment>
  <info>array</info>  包含已加载的Apache模块的<info>数组</info>.


id: apache_get_version
type: function
doc:
<comment>Description:</comment>
  获得Apache版本信息
  
  获得Apache版本信息。

<comment>Return:</comment>
  <info>string|false</info>  成功时返回 Apache 版本信息  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>phpinfo()</strong>


id: apache_getenv
type: function
doc:
<comment>Description:</comment>
  获取 Apache subprocess_env 变量
  
  获取 <strong>$variable</strong> 指定的环境变量。

<comment>Param:</comment>
  <info>string</info>  <strong>$variable</strong>     Apache 环境变量
  <info>bool</info>    <strong>$walk_to_top</strong>  是否获取对Apache各层可用的顶层变量

<comment>Return:</comment>
  <info>string|false</info>  成功时返回 Apache 环境变量值，失败时返回 <info>false</info>

<comment>See Also:</comment>
   * <strong>apache_setenv()</strong>
   * <strong>getenv()</strong>
   * 超全局变量


id: apache_lookup_uri
type: function
doc:
<comment>Description:</comment>
  对指定的 URI 执行部分请求并返回所有有关信息
  
  本函数对一个 URL 执行部分请求。取得所有有关给定资源的重要信息后就停手。
  
  仅在 PHP 以 Apache 模块运行时，才支持此函数。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>  被请求的文件名（URI）。

<comment>Return:</comment>
  <info>object|false</info>  一个有关 URI 信息的 <info>object</info>。此 <info>object</info> 的属性有：
                
                
                statusthe_requeststatus_linemethodcontent_typehandlerurifilenamepath_infoargsboundaryno_cacheno_local_copyallowedsend_bodyctbytes_sentbyterangeclengthunparsed_urimtimerequest_time
                
                失败时返回 <info>false</info>。


id: apache_note
type: function
doc:
<comment>Description:</comment>
  取得或设置 apache 请求记录
  
  这个函数是 Apache  <return>table_get</return> 和 <return>table_set</return> 的包装。  它编辑了请求中存在的 notes 表。 这个表的目的是
  允许 Apache 模块进行通讯。
  
  <strong>apache_note()</strong> 的主要用途是在同一个请求中，从一个模块传递信息到另一个模块。

<comment>Param:</comment>
  <info>string</info>       <strong>$note_name</strong>   note 名。
  <info>string|null</info>  <strong>$note_value</strong>  note 值。

<comment>Return:</comment>
  <info>string|false</info>  如果 <strong>$note_value</strong> 被省略或者为 <info>null</info>，则返回记录 <return>note_name</return> 的当前值。否则将记录
                <return>note_name</return> 的值设为 <return>note_value</return> 并返回记录 <return>note_name</return> 的前一个值。如果未能获取记录，则
                返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>virtual()</strong>


id: apache_request_headers
type: function
doc:
<comment>Description:</comment>
  获取全部 HTTP 请求头信息
  
  获取当前请求的所有请求头信息。 可在 Apache、FastCGI、CLI、FPM 模式下运行。

<comment>Return:</comment>
  <info>array</info>  包含当前请求所有头信息的数组，失败返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>apache_response_headers()</strong>


id: apache_response_headers
type: function
doc:
<comment>Description:</comment>
  获得全部 HTTP 响应头信息
  
  获得全部 HTTP 响应头信息。 可在 Apache、FastCGI、CLI、FPM 模式下运行。

<comment>Return:</comment>
  <info>array|false</info>  成功时返回包含全部 Apache 响应头信息的数组， 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>apache_request_headers()</strong>
   * <strong>headers_sent()</strong>
   * <strong>headers_list()</strong>


id: apache_setenv
type: function
doc:
<comment>Description:</comment>
  设置 Apache 子进程环境变量
  
  <strong>apache_setenv()</strong> 设置由<strong>$variable</strong>指定的 Apache 环境变量值。
  
  当设置了某 Apache 环境变量, 相应的 $_SERVER 变量不会改变。

<comment>Param:</comment>
  <info>string</info>  <strong>$variable</strong>     将被设置的环境变量。
  <info>string</info>  <strong>$value</strong>        新 <strong>$variable</strong> 值。
  <info>bool</info>    <strong>$walk_to_top</strong>  是否将所设置的顶层变量应用到所有 Apache 层。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>apache_getenv()</strong>


id: apcu_add
type: function
doc:
<comment>Description:</comment>
  缓存一个新变量到存储中
    
  
  将一个从未被缓存过的变量添加到到存储中。
  
  与 PHP 中常见的变量生命周期不同的是，通过 <strong>apcu_add()</strong> 存储的变量可以在多个 request 之间共享（直到该
  变量从 cache 中被删除）。

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>     使用此名称存储变量。<strong>$key</strong> 必须是唯一的，因此如果用 <strong>apcu_add()</strong> 存储变量时指定的 key
                   已经存在， 就会直接返回 <info>false</info>，不会覆写已有的数据。（这也是 <strong>apcu_add()</strong> 和
                   <strong>apcu_store()</strong> 之间唯一的区别。）
  <info>mixed</info>   <strong>$var</strong>     被存储的变量
  <info>int</info>     <strong>$ttl</strong>     变量生存时间（Time To Live）；被存储的 <strong>$var</strong> 经过 <strong>$ttl</strong> 秒后，会从存储中被删除（下
                   一次请求时）。如果没提供 <strong>$ttl</strong> （或 <strong>$ttl</strong> 为 <return>0</return> ），该变量会一直存在直到手动删除它，
                   或者其他原因导致该变量从缓存中消失（清除，重启等等。）。
  <info>array</info>   <strong>$values</strong>  数组索引作为 key，数组值作为被存储的 var。

<comment>Return:</comment>
  <info>bool</info>  变量被成功添加时返回 TRUE，否则返回 FALSE。第二种语法返回包含添加失败的 key 的数组。

<comment>See Also:</comment>
   * <strong>apcu_store()</strong>
   * <strong>apcu_fetch()</strong>
   * <strong>apcu_delete()</strong>


id: apcu_cache_info
type: function
doc:
<comment>Description:</comment>
  从 APCu 存储中获取缓存信息
    
  
  从 APCu 存储中获取缓存信息和元数据（meta-data）。

<comment>Param:</comment>
  <info>bool</info>  <strong>$limited</strong>  如果 <strong>$limited</strong> 为 <info>true</info>，则不会返回具体被缓存的数据的列表，这在尝试根据统计数据进行
                  调用优化时是很有用的。

<comment>Return:</comment>
  <info>array|false</info>  成功时返回包含缓存数据（和元数据）的数组 或者在失败时返回 <info>false</info>
               
               当 <strong>apcu_cache_info()</strong> 无法获取到缓存信息时会触发警告（warning），这种情况通常是因为没
               有开启 APC 功能。

<comment>See Also:</comment>
   * APCu 配置指令
   * APCUIterator::getTotalSize
   * APCUIterator::getTotalHits
   * APCUIterator::getTotalCount


id: apcu_cas
type: function
doc:
<comment>Description:</comment>
  Updates an old value with a new value
  
  <strong>apcu_cas()</strong> updates an already existing integer value if the  <strong>$old</strong> parameter matches the currently
  stored value  with the value of the <strong>$new</strong> parameter.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>  The key of the value being updated.
  <info>int</info>     <strong>$old</strong>  The old value (the value currently stored).
  <info>int</info>     <strong>$new</strong>  The new value to update to.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>apcu_dec()</strong>
   * <strong>apcu_store()</strong>


id: apcu_clear_cache
type: function
doc:
<comment>Description:</comment>
  Clears the APCu cache
    
  
  Clears the cache.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> always

<comment>See Also:</comment>
   * <strong>apcu_cache_info()</strong>


id: apcu_dec
type: function
doc:
<comment>Description:</comment>
  Decrease a stored number
  
  Decreases a stored integer value.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>      The key of the value being decreased.
  <info>int</info>     <strong>$step</strong>     The step, or value to decrease.
  <info>bool</info>    <strong>$success</strong>  Optionally pass the success or fail boolean value to this referenced variable.
  <info>int</info>     <strong>$ttl</strong>      TTL to use if the operation inserts a new value (rather than decrementing an
                    existing one).

<comment>Return:</comment>
  <info>int|false</info>  Returns the current value of <strong>$key</strong>'s value on success, 或者在失败时返回 <info>false</info>

<comment>See Also:</comment>
   * <strong>apcu_inc()</strong>


id: apcu_delete
type: function
doc:
<comment>Description:</comment>
  Removes a stored variable from the cache
    
  
  Removes a stored variable from the cache.

<comment>Param:</comment>
  <info>mixed</info>  <strong>$key</strong>  A <strong>$key</strong> used to store the value as a <info>string</info> for a single key, or as an <info>array</info> of
               strings for several keys, or as an <class>APCUIterator</class> <info>object</info>.

<comment>Return:</comment>
  <info>mixed</info>  If <strong>$key</strong> is an <info>array</info>, an indexed <info>array</info> of the keys is returned. Otherwise <info>true</info> is returned
         on success, or <info>false</info> on failure.

<comment>See Also:</comment>
   * <strong>apcu_store()</strong>
   * <strong>apcu_fetch()</strong>
   * <strong>apcu_clear_cache()</strong>
   * <class>APCUIterator</class>


id: apcu_enabled
type: function
doc:
<comment>Description:</comment>
  Whether APCu is usable in the current environment
  
  Returns whether APCu is usable in the current environment.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> when APCu is usable in the current environment, <info>false</info> otherwise.


id: apcu_entry
type: function
doc:
<comment>Description:</comment>
  Atomically fetch or generate a cache entry
    
  
  Atomically attempts to find <strong>$key</strong> in the cache, if it cannot be found <strong>$generator</strong> is called, passing
  <strong>$key</strong> as the only argument. The return value of the call is then cached with the optionally
  specified <strong>$ttl</strong>, and returned.
  
  When control enters <strong>apcu_entry()</strong> the lock for the cache is acquired exclusively, it is released
  when control leaves <strong>apcu_entry()</strong>:  In effect, this turns the body of <strong>$generator</strong> into a critical
  section, disallowing two processes from executing the same code paths concurrently. In addition,
  it prohibits the concurrent execution of any other APCu functions, since they will acquire the
  same lock.
  
  The only APCu function that can be called safely by <strong>$generator</strong> is <strong>apcu_entry()</strong>.

<comment>Param:</comment>
  <info>string</info>    <strong>$key</strong>        Identity of cache entry
  <info>callable</info>  <strong>$generator</strong>  A callable that accepts <strong>$key</strong> as the only argument and returns the value to
                        cache.
  <info>int</info>       <strong>$ttl</strong>        Time To Live; store <strong>$var</strong> in the cache for <strong>$ttl</strong> seconds. After the <strong>$ttl</strong> has
                        passed, the stored variable will be expunged from the cache (on the next
                        request). If no <strong>$ttl</strong> is supplied (or if the <strong>$ttl</strong> is <return>0</return>), the value will
                        persist until it is removed from the cache manually, or otherwise fails to
                        exist in the cache (clear, restart, etc.).

<comment>Return:</comment>
  <info>mixed</info>  Returns the cached value

<comment>See Also:</comment>
   * <strong>apcu_store()</strong>
   * <strong>apcu_fetch()</strong>
   * <strong>apcu_delete()</strong>


id: apcu_exists
type: function
doc:
<comment>Description:</comment>
  Checks if entry exists
  
  Checks if one or more APCu entries exist.

<comment>Param:</comment>
  <info>mixed</info>  <strong>$keys</strong>  A <info>string</info>, or an <info>array</info> of strings, that contain keys.

<comment>Return:</comment>
  <info>mixed</info>  Returns <info>true</info> if the key exists, otherwise <info>false</info> Or if an <info>array</info> was passed to <strong>$keys</strong>, then an
         array is returned that contains all existing keys, or an empty array if none exist.

<comment>See Also:</comment>
   * <strong>apcu_cache_info()</strong>
   * <strong>apcu_fetch()</strong>


id: apcu_fetch
type: function
doc:
<comment>Description:</comment>
  Fetch a stored variable from the cache
    
  
  Fetches an entry from the cache.

<comment>Param:</comment>
  <info>mixed</info>  <strong>$key</strong>      The <strong>$key</strong> used to store the value (with <strong>apcu_store()</strong>). If an array is passed then
                   each element is fetched and returned.
  <info>bool</info>   <strong>$success</strong>  Set to <info>true</info> in success and <info>false</info> in failure.

<comment>Return:</comment>
  <info>mixed</info>  The stored variable or array of variables on success; <info>false</info> on failure

<comment>See Also:</comment>
   * <strong>apcu_store()</strong>
   * <strong>apcu_delete()</strong>
   * <class>APCUIterator</class>


id: apcu_inc
type: function
doc:
<comment>Description:</comment>
  Increase a stored number
  
  Increases a stored number.

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>      The key of the value being increased.
  <info>int</info>     <strong>$step</strong>     The step, or value to increase.
  <info>bool</info>    <strong>$success</strong>  Optionally pass the success or fail boolean value to this referenced variable.
  <info>int</info>     <strong>$ttl</strong>      TTL to use if the operation inserts a new value (rather than incrementing an
                    existing one).

<comment>Return:</comment>
  <info>int|false</info>  Returns the current value of <strong>$key</strong>'s value on success, 或者在失败时返回 <info>false</info>

<comment>See Also:</comment>
   * <strong>apcu_dec()</strong>


id: apcu_key_info
type: function
doc:
<comment>Description:</comment>
  Get detailed information about the cache key
    
  
  Get detailed information about the cache key

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>  Get detailed information about the cache key

<comment>Return:</comment>
  <info>array|null</info>  An array containing the detailed information about the cache key, or <info>null</info> if the key
              does not exist.

<comment>See Also:</comment>
   * <strong>apcu_store()</strong>
   * <strong>apcu_fetch()</strong>
   * <strong>apcu_delete()</strong>


id: apcu_sma_info
type: function
doc:
<comment>Description:</comment>
  Retrieves APCu Shared Memory Allocation information
    
  
  Retrieves APCu Shared Memory Allocation information.

<comment>Param:</comment>
  <info>bool</info>  <strong>$limited</strong>  When set to <info>false</info> (default) <strong>apcu_sma_info()</strong> will return a detailed information
                  about each segment.

<comment>Return:</comment>
  <info>array|false</info>  Array of Shared Memory Allocation data; <info>false</info> on failure.

<comment>See Also:</comment>
   * APCu configuration directives


id: apcu_store
type: function
doc:
<comment>Description:</comment>
  缓存一个变量到存储中
    
  
  缓存一个变量到存储中。
  
  与 PHP 中常见的变量生命周期不同的是，通过 <strong>apcu_store()</strong> 存储的变量可以在多个 request 之间共享（直到
  该变量从 cache 中被删除）。

<comment>Param:</comment>
  <info>string</info>  <strong>$key</strong>     使用此名称存储变量。<strong>$key</strong> 是唯一的，因此当多次使用同样的 <strong>$key</strong> 存储变量时，后一次会
                   覆盖前一次的值。
  <info>mixed</info>   <strong>$var</strong>     被存储的变量
  <info>int</info>     <strong>$ttl</strong>     变量生存时间（Time To Live）；被存储的 <strong>$var</strong> 经过 <strong>$ttl</strong> 秒后，会从存储中被删除（下
                   一次请求时）。如果没提供 <strong>$ttl</strong> （或 <strong>$ttl</strong> 为 <return>0</return> ），该变量会一直存在直到手动删除它，
                   或者其他原因导致该变量从缓存中消失（清除，重启等等。）。
  <info>array</info>   <strong>$values</strong>  数组索引作为 key，数组值作为被存储的 var。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。 第二种语法返回包含存储失败的 key 的数组。

<comment>See Also:</comment>
   * <strong>apcu_add()</strong>
   * <strong>apcu_fetch()</strong>
   * <strong>apcu_delete()</strong>


id: array
type: function
doc:
<comment>Description:</comment>
  新建一个数组
      
  
  创建一个数组。关于数组是什么的信息请阅读数组一节。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$values</strong>  语法“index =&gt; values”，用逗号分开，定义了索引和值。索引可以是字符串或数字。如果
                  省略了索引，会自动产生从 0 开始的整数索引。如果索引是整数，则下一个产生的索引将是
                  目前最大的整数索引 + 1。注意如果定义了两个完全一样的索引，则后面一个会覆盖前一个。
                  
                  在最后一个定义的数组项目之后加一个逗号虽然不常见，却是合法的语法。

<comment>Return:</comment>
  <info>array</info>  返回根据参数建立的数组。参数可以用 <return>=&gt;</return> 运算符给出索引。关于数组是什么的信息请阅读数组一
         节。

<comment>See Also:</comment>
   * <strong>array_pad()</strong>
   * <strong>list()</strong>
   * <strong>count()</strong>
   * <strong>range()</strong>
   * foreach
   * array 类型


id: array_change_key_case
type: function
doc:
<comment>Description:</comment>
  将数组中的所有键名修改为全大写或小写
  
  <strong>array_change_key_case()</strong> 将 <strong>$array</strong> 数组中的所有键名改为全小写或大写。本函数不改变数字索引。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  需要操作的数组。
  <info>int</info>    <strong>$case</strong>   可以在这里用两个常量，<info>CASE_UPPER</info> 或 <info>CASE_LOWER</info>（默认值）。

<comment>Return:</comment>
  <info>array</info>  返回一个键全是小写或者全是大写的数组；


id: array_chunk
type: function
doc:
<comment>Description:</comment>
  将一个数组分割成多个
  
  将一个数组分割成多个数组，其中每个数组的单元数目由 <strong>$length</strong> 决定。最后一个数组的单元数目可能会少于
  <strong>$length</strong> 个。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>          需要操作的数组
  <info>int</info>    <strong>$length</strong>         每个数组的单元数目
  <info>bool</info>   <strong>$preserve_keys</strong>  设为 <info>true</info>，可以使 PHP 保留输入数组中原来的键名。如果你指定了 <info>false</info>，那每个
                         结果数组将用从零开始的新数字索引。默认值是 <info>false</info>。

<comment>Return:</comment>
  <info>array</info>  得到的数组是一个多维数组中的单元，其索引从零开始，每一维包含了 <strong>$length</strong> 个元素。

<comment>See Also:</comment>
   * <strong>array_slice()</strong>


id: array_column
type: function
doc:
<comment>Description:</comment>
  返回输入数组中指定列的值
  
  <strong>array_column()</strong> 返回 <strong>$array</strong> 中键名为 <strong>$column_key</strong> 的一列值。 如果指定了可选参数 <strong>$index_key</strong>，则使用输
  入数组中 <strong>$index_key</strong> 列的值将作为返回数组中对应值的键。

<comment>Param:</comment>
  <info>array</info>            <strong>$array</strong>       多维数组或对象数组，从中提取一列值。 如果提供的是对象数组，只有
                                public 的属性会被直接取出。 如果想取出 private 和 protected 的属性，
                                类必须实现 <strong>__get()</strong> 和 <strong>__isset()</strong> 魔术方法。
  <info>int|string|null</info>  <strong>$column_key</strong>  需要返回值的列。它可以是索引数组的列索引，或者是关联数组的列的键，也
                                可以是属性名。 也可以是 <info>null</info> ，此时将返回整个数组（配合 <strong>$index_key</strong>
                                参数来重新索引数组时非常好用）。
  <info>int|string|null</info>  <strong>$index_key</strong>   作为返回数组的索引/键的列。它可以是该列的整数索引，或者字符串键值。
                                该值会像数组键一样被 强制转换 （但是，在 PHP 8.0.0 之前，也被允许支
                                持转换为字符串对象）。

<comment>Return:</comment>
  <info>array</info>  返回输入数组中单列值的数组。


id: array_combine
type: function
doc:
<comment>Description:</comment>
  创建一个数组，用一个数组的值作为其键名，另一个数组的值作为其值
      
  
  返回一个 <info>array</info>，用来自 <strong>$keys</strong> 数组的值作为键名，来自 <strong>$values</strong> 数组的值作为相应的值。

<comment>Param:</comment>
  <info>array</info>  <strong>$keys</strong>    将被作为新数组的键。非法的值将会被转换为字符串类型（<info>string</info>）。
  <info>array</info>  <strong>$values</strong>  将被作为 <info>Array</info> 的值。

<comment>Return:</comment>
  <info>array</info>  返回合并后的 <info>array</info>。

<comment>See Also:</comment>
   * <strong>array_merge()</strong>
   * <strong>array_walk()</strong>
   * <strong>array_values()</strong>
   * <strong>array_map()</strong>


id: array_count_values
type: function
doc:
<comment>Description:</comment>
  统计数组中每个不同值的出现次数
  
  <strong>array_count_values()</strong> 返回一个数组： 数组的键（必须是 <info>int</info> 或 <info>string</info>）是 <strong>$array</strong> 里单元的值； 数组的
  值是 <strong>$array</strong> 单元的值出现的次数。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  统计这个数组的值

<comment>Return:</comment>
  <info>array</info>  返回一个关联数组，用 <strong>$array</strong> 数组中的值作为键名，该值在数组中出现的次数作为值。

<comment>See Also:</comment>
   * <strong>count()</strong>
   * <strong>array_unique()</strong>
   * <strong>array_values()</strong>
   * <strong>count_chars()</strong>


id: array_diff
type: function
doc:
<comment>Description:</comment>
  计算数组的差集
  
  对比 <strong>$array</strong> 和其他一个或者多个数组，返回在 <strong>$array</strong> 中但是不在其他 array 里的值。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   要被对比的数组
  <info>array</info>  <strong>$arrays</strong>  和更多数组进行比较

<comment>Return:</comment>
  <info>array</info>  返回一个数组，该数组包括了所有在 <strong>$array</strong> 中但是不在任何其它参数数组中的值。注意键名保留不
         变。 保留数组 <strong>$array</strong> 里的键。

<comment>See Also:</comment>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_udiff()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>


id: array_diff_assoc
type: function
doc:
<comment>Description:</comment>
  带索引检查计算数组的差集
  
  <strong>array_diff_assoc()</strong> 返回一个数组，该数组包括了所有在 <strong>$array</strong> 中但是不在任何其它参数 <strong>$arrays</strong> 中的值。
  注意和 <strong>array_diff()</strong> 不同的是键名也用于比较。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   从这个数组进行比较
  <info>array</info>  <strong>$arrays</strong>  要比较的数组

<comment>Return:</comment>
  <info>array</info>  返回一个 <info>array</info>，包含所有在 <strong>$array</strong> 中但是不在任何其它参数数组中的值。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_diff_uassoc()</strong>
   * <strong>array_udiff_assoc()</strong>
   * <strong>array_udiff_uassoc()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>


id: array_diff_key
type: function
doc:
<comment>Description:</comment>
  使用键名比较计算数组的差集
  
  根据 <strong>$array</strong> 中的键名和 <strong>$arrays</strong> 进行比较，返回不同键名的项。 本函数和 <strong>array_diff()</strong> 相同只除了比较是
  根据键名而不是值来进行的。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   从这个数组进行比较
  <info>array</info>  <strong>$arrays</strong>  要进行比较的数组

<comment>Return:</comment>
  <info>array</info>  返回一个数组，该数组包含了所有出现在 <strong>$array</strong> 中但是未出现在任何其它数组中的键名的值。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_udiff()</strong>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_diff_uassoc()</strong>
   * <strong>array_udiff_assoc()</strong>
   * <strong>array_udiff_uassoc()</strong>
   * <strong>array_diff_ukey()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_intersect_uassoc()</strong>
   * <strong>array_intersect_key()</strong>
   * <strong>array_intersect_ukey()</strong>


id: array_diff_uassoc
type: function
doc:
<comment>Description:</comment>
  用用户提供的回调函数做索引检查来计算数组的差集
  
  比较了 <strong>$array</strong> 和 <strong>$arrays</strong> 并返回不同之处。 注意和 <strong>array_diff()</strong> 不同的是键名也用于比较。
  
  和 <strong>array_diff_assoc()</strong> 不同的是使用了用户自定义的回调函数，而不是内置的函数。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>             待比较的数组
  <info>array</info>     <strong>$arrays</strong>            要比较的数组
  <info>callable</info>  <strong>$key_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一
                               个小于，等于或大于 0 的整数。
                               
                               从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                               返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，将
                               这些值比较的话将会是相等。

<comment>Return:</comment>
  <info>array</info>  返回一个 <info>array</info>，该数组包括了所有在 <strong>$array</strong> 中但是不在任何其它参数数组中的值。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_udiff()</strong>
   * <strong>array_udiff_assoc()</strong>
   * <strong>array_udiff_uassoc()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_uintersect()</strong>
   * <strong>array_uintersect_assoc()</strong>
   * <strong>array_uintersect_uassoc()</strong>


id: array_diff_ukey
type: function
doc:
<comment>Description:</comment>
  用回调函数对键名比较计算数组的差集
  
  将 <strong>$array</strong> 的键与 <strong>$arrays</strong> 的键进行比较并返回不存在于其它数组的键值。本函数和 <strong>array_diff()</strong> 很像，区
  别只是用键名来比较而不是值。
  
  此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于，等于，或大于第二个参数时必须分别返
  回一个小于零，等于零，或大于零的整数。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>             要比较的数组
  <info>array</info>     <strong>$arrays</strong>            要比较的数组
  <info>callable</info>  <strong>$key_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一
                               个小于，等于或大于 0 的整数。
                               
                               从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                               返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，将
                               这些值比较的话将会是相等。

<comment>Return:</comment>
  <info>array</info>  返回一个 <info>array</info>，该数组包含了 <strong>$array</strong> 中存在但其它数组不存在的键值。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_udiff()</strong>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_diff_uassoc()</strong>
   * <strong>array_udiff_assoc()</strong>
   * <strong>array_udiff_uassoc()</strong>
   * <strong>array_diff_key()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_intersect_uassoc()</strong>
   * <strong>array_intersect_key()</strong>
   * <strong>array_intersect_ukey()</strong>


id: array_fill
type: function
doc:
<comment>Description:</comment>
  用给定的值填充数组
  
  用 <strong>$value</strong> 参数的值填充 <strong>$count</strong> 个元素到数组， 开始键名由 <strong>$start_index</strong> 参数指定。

<comment>Param:</comment>
  <info>int</info>    <strong>$start_index</strong>  返回的数组的第一个索引值。
                       
                       如果 <strong>$start_index</strong> 是负数，在 PHP 8.0.0  之前，返回的数组的第一个索引是
                       <strong>$start_index</strong>， 而后面索引则从 0 开始；自 PHP 8.0.0 起， 负数键将会正常递增。
                       （参见 例子）
  <info>int</info>    <strong>$count</strong>        要插入元素的数量。必须大于或等于 0 且小于或等于 <return>2147483647</return>。
  <info>mixed</info>  <strong>$value</strong>        用来填充的值。

<comment>Return:</comment>
  <info>array</info>  返回填充后的数组。

<comment>See Also:</comment>
   * <strong>array_fill_keys()</strong>
   * <strong>str_repeat()</strong>
   * <strong>range()</strong>


id: array_fill_keys
type: function
doc:
<comment>Description:</comment>
  使用指定的键和值填充数组
  
  使用 <strong>$value</strong> 参数的值作为值，使用 <strong>$keys</strong> 数组的值作为键来填充一个数组。

<comment>Param:</comment>
  <info>array</info>  <strong>$keys</strong>   使用该数组的值作为键。非法值将被转换为<info>字符串</info>。
  <info>mixed</info>  <strong>$value</strong>  填充使用的值。

<comment>Return:</comment>
  <info>array</info>  返回填充后的数组。

<comment>See Also:</comment>
   * <strong>array_fill()</strong>
   * <strong>array_combine()</strong>


id: array_filter
type: function
doc:
<comment>Description:</comment>
  使用回调函数过滤数组的元素
  
  遍历 <strong>$array</strong> 数组中的每个值，并将每个值传递给 <strong>$callback</strong> 回调函数。 如果 <strong>$callback</strong> 回调函数返回
  <info>true</info>，则将 <strong>$array</strong> 数组中的当前值返回到结果 <info>array</info> 数组中。
  
  返回结果 <info>array</info> 数组的键名（下标）会维持不变，如果 <strong>$array</strong> 参数是索引数组，返回的结果 <info>array</info> 数组键名
  （下标）可能会不连续。 可以使用 <strong>array_values()</strong> 函数对数组重新索引。

<comment>Param:</comment>
  <info>array</info>          <strong>$array</strong>     要遍历的数组
  <info>callable|null</info>  <strong>$callback</strong>  使用的回调函数
                            
                            如果没有提供 <strong>$callback</strong> 回调函数，将删除数组中 <strong>$array</strong> 的所有“空”元素。 有
                            关 PHP 如何判定“空”元素，请参阅 <strong>empty()</strong> 。
  <info>int</info>            <strong>$mode</strong>      决定哪些参数发送到 <strong>$callback</strong> 回调的标志： <info>ARRAY_FILTER_USE_KEY</info> - 将键名
                            作为 <strong>$callback</strong> 回调的唯一参数，而不是值<info>ARRAY_FILTER_USE_BOTH</info> - 将值和键
                            都作为参数传递给 <strong>$callback</strong> 回调，而不是仅传递值 默认值为 <return>0</return> ，只传递值作
                            为 <strong>$callback</strong> 回调的唯一参数。
                            
                            <info>ARRAY_FILTER_USE_KEY</info> - 将键名作为 <strong>$callback</strong> 回调的唯一参数，而不是值
                            
                            <info>ARRAY_FILTER_USE_BOTH</info> - 将值和键都作为参数传递给 <strong>$callback</strong> 回调，而不是
                            仅传递值

<comment>Return:</comment>
  <info>array</info>  返回过滤后的数组。

<comment>See Also:</comment>
   * <strong>array_intersect()</strong>
   * <strong>array_map()</strong>
   * <strong>array_reduce()</strong>
   * <strong>array_walk()</strong>


id: array_flip
type: function
doc:
<comment>Description:</comment>
  交换数组中的键和值
  
  <strong>array_flip()</strong> 返回一个反转后的 <info>array</info>，例如 <strong>$array</strong> 中的键名变成了值，而 <strong>$array</strong> 中的值成了键名。
  
  注意 <strong>$array</strong> 中的值需要能够作为合法的键名（例如需要是 <info>int</info> 或者 <info>string</info>）。如果类型不对，将出现一个警
  告，并且有问题的键／值对将不会出现在结果里。
  
  如果同一个值出现多次，则最后一个键名将作为它的值，其它键会被丢弃。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  要交换键/值对的数组。

<comment>Return:</comment>
  <info>array</info>  返回交换后的数组。

<comment>See Also:</comment>
   * <strong>array_values()</strong>
   * <strong>array_keys()</strong>
   * <strong>array_reverse()</strong>


id: array_intersect
type: function
doc:
<comment>Description:</comment>
  计算数组的交集
  
  <strong>array_intersect()</strong> 返回一个数组，该数组包含了所有在 <strong>$array</strong> 和其它参数数组中同时存在的值。注意，键名
  保留不变。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   要检查的数组，作为主值。
  <info>array</info>  <strong>$arrays</strong>  要被对比的数组。

<comment>Return:</comment>
  <info>array</info>  返回一个数组，该数组包含了所有在 <strong>$array</strong> 和其它参数数组中同时存在的值。

<comment>See Also:</comment>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_diff()</strong>
   * <strong>array_diff_assoc()</strong>


id: array_intersect_assoc
type: function
doc:
<comment>Description:</comment>
  带索引检查计算数组的交集
  
  <strong>array_intersect_assoc()</strong> 返回一个数组，该数组包含了所有在 <strong>$array</strong> 和其它参数数组中同时存在的值。注意
  和 <strong>array_intersect()</strong> 不同的是，键名也用于比较。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   要检查的数组，作为主值。
  <info>array</info>  <strong>$arrays</strong>  要被对比的数组。

<comment>Return:</comment>
  <info>array</info>  返回一个关联数组，该数组包含了所有在 <strong>$array</strong> 和其它参数数组中同时存在的值。

<comment>See Also:</comment>
   * <strong>array_intersect()</strong>
   * <strong>array_uintersect_assoc()</strong>
   * <strong>array_intersect_uassoc()</strong>
   * <strong>array_uintersect_uassoc()</strong>
   * <strong>array_diff()</strong>
   * <strong>array_diff_assoc()</strong>


id: array_intersect_key
type: function
doc:
<comment>Description:</comment>
  使用键名比较计算数组的交集
  
  <strong>array_intersect_key()</strong> 返回一个数组，该数组包含了所有出现在 <strong>$array</strong> 和其它参数数组中同时存在的键名的
  值。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   要检查的数组，作为主值。
  <info>array</info>  <strong>$arrays</strong>  要被对比的数组。

<comment>Return:</comment>
  <info>array</info>  返回一个关联数组，该数组包含了所有出现在 <strong>$array</strong> 和其它参数数组中同时存在的键名的值。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_udiff()</strong>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_diff_uassoc()</strong>
   * <strong>array_udiff_assoc()</strong>
   * <strong>array_udiff_uassoc()</strong>
   * <strong>array_diff_key()</strong>
   * <strong>array_diff_ukey()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_intersect_uassoc()</strong>
   * <strong>array_intersect_ukey()</strong>


id: array_intersect_uassoc
type: function
doc:
<comment>Description:</comment>
  带索引检查计算数组的交集，用回调函数比较索引
  
  <strong>array_intersect_uassoc()</strong> 返回一个数组，该数组包含了所有在 <strong>$array</strong> 和其它参数数组中同时存在的值。注
  意和 <strong>array_intersect()</strong> 不同的是，键名也用于比较。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>             用于数组比较的初始数组。
  <info>array</info>     <strong>$arrays</strong>            用于比较键的数组。
  <info>callable</info>  <strong>$key_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一
                               个小于，等于或大于 0 的整数。
                               
                               从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                               返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，将
                               这些值比较的话将会是相等。

<comment>Return:</comment>
  <info>array</info>  返回 <strong>$array</strong> 的值，这些值同时存在于其它参数数组中。

<comment>See Also:</comment>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_uintersect_assoc()</strong>
   * <strong>array_uintersect_uassoc()</strong>
   * <strong>array_intersect_key()</strong>
   * <strong>array_intersect_ukey()</strong>


id: array_intersect_ukey
type: function
doc:
<comment>Description:</comment>
  在键名上使用回调函数来比较计算数组的交集
  
  <strong>array_intersect_ukey()</strong> 返回一个数组，该数组包含了所有在 <strong>$array</strong> 和其它参数数组中同时存在的键名的
  值。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>             用于数组比较的初始数组。
  <info>array</info>     <strong>$arrays</strong>            用于比较键的数组。
  <info>callable</info>  <strong>$key_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一
                               个小于，等于或大于 0 的整数。
                               
                               从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                               返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，将
                               这些值比较的话将会是相等。

<comment>Return:</comment>
  <info>array</info>  返回 <strong>$array</strong> 的值，其键名同时存在于所有参数数组中。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_udiff()</strong>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_diff_uassoc()</strong>
   * <strong>array_udiff_assoc()</strong>
   * <strong>array_udiff_uassoc()</strong>
   * <strong>array_diff_key()</strong>
   * <strong>array_diff_ukey()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_intersect_uassoc()</strong>
   * <strong>array_intersect_key()</strong>


id: array_is_list
type: function
doc:
<comment>Description:</comment>
  判断给定的 array 是否为 list
  
  判断指定的 <strong>$array</strong> 是否是 list。如果 <info>array</info> 的 key 由 <return>0</return> 到 <return>count($array)-1</return> 的连续数字组成，则该数组
  就是 list。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  被检测的 <info>array</info>。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$array</strong> 是 list 就返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>array_values()</strong>


id: array_key_exists
type: function
doc:
<comment>Description:</comment>
  检查数组里是否有指定的键名或索引
  
  数组里有键 <strong>$key</strong> 时，<strong>array_key_exists()</strong> 返回 <info>true</info>。 <strong>$key</strong> 可以是任何能作为数组索引的值。

<comment>Param:</comment>
  <info>string|int</info>  <strong>$key</strong>    要检查的键。
  <info>array</info>       <strong>$array</strong>  一个数组，包含待检查的键。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。
        
        <strong>array_key_exists()</strong> 仅仅搜索第一维的键。 多维数组里嵌套的键不会被搜索到。

<comment>See Also:</comment>
   * <strong>isset()</strong>
   * <strong>array_keys()</strong>
   * <strong>in_array()</strong>
   * <strong>property_exists()</strong>


id: array_key_first
type: function
doc:
<comment>Description:</comment>
  获取指定数组的第一个键
  
  不影响到数组内部指针，取得指定数组的 <strong>$array</strong> 第一个键。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  要操作的数组。

<comment>Return:</comment>
  <info>int|string|null</info>  如果 <strong>$array</strong> 不是空的，返回第一个键，否则返回 <info>null</info>。

<comment>See Also:</comment>
   * <strong>array_key_last()</strong>
   * <strong>reset()</strong>


id: array_key_last
type: function
doc:
<comment>Description:</comment>
  获取一个数组的最后一个键值
  
  取得指定数组的 <strong>$array</strong> 最后一个键值，不会影响到原数组的内部指针。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  要操作的数组。

<comment>Return:</comment>
  <info>int|string|null</info>  返回 <strong>$array</strong> 的最后一个键值（如果不为空），否则返回 <info>null</info>。

<comment>See Also:</comment>
   * <strong>array_key_first()</strong>
   * <strong>end()</strong>


id: array_keys
type: function
doc:
<comment>Description:</comment>
  返回数组中部分的或所有的键名
  
  <strong>array_keys()</strong> 返回 <strong>$input</strong> 数组中的数字或者字符串的键名。
  
  如果指定了可选参数 <strong>$filter_value</strong>，则只返回该值的键名。否则 <strong>$input</strong> 数组中的所有键名都会被返回。

<comment>Param:</comment>
  <info></info>       <strong>$input</strong>         一个数组，包含了要返回的键。
  <info>mixed</info>  <strong>$filter_value</strong>  如果指定了这个参数，只有包含此值的键才会返回。
  <info>bool</info>   <strong>$strict</strong>        判断在搜索的时候是否该使用严格的比较（===）。

<comment>Return:</comment>
  <info>array</info>  返回 <strong>$input</strong> 里的所有键。

<comment>See Also:</comment>
   * <strong>array_values()</strong>
   * <strong>array_combine()</strong>
   * <strong>array_key_exists()</strong>
   * <strong>array_search()</strong>


id: array_map
type: function
doc:
<comment>Description:</comment>
  为数组的每个元素应用回调函数
      
  
  <strong>array_map()</strong> 返回一个 <info>array</info>，包含将 <strong>$array</strong> 的相应值作为回调的参数顺序调用  <strong>$callback</strong> 后的结果（如果
  提供了更多数组，还会利用 <strong>$arrays</strong>  传入）。<strong>$callback</strong> 函数形参的数量必须匹配 <strong>array_map()</strong>  实参中数组
  的数量。多余的实参数组将会被忽略。如果提供的实参数组的数量不足，将抛出 <class>ArgumentCountError</class>。

<comment>Param:</comment>
  <info>callable|null</info>  <strong>$callback</strong>  回调函数 <info>callable</info>，应用到每个数组里的每个元素。
                            
                            多个数组操作合并时，<strong>$callback</strong> 可以设置为 <info>null</info>。 如果只提供了 <strong>$array</strong> 一个
                            数组， array_map 会返回输入的数组。
  <info>array</info>          <strong>$array</strong>     数组，遍历运行 <strong>$callback</strong> 函数。
  <info>array</info>          <strong>$arrays</strong>    额外的数组列表，每个都遍历运行 <strong>$callback</strong> 函数。

<comment>Return:</comment>
  <info>array</info>  返回数组，包含将 <strong>$array</strong> 的相应值作为回调的参数调用 <strong>$callback</strong> 函数后的结果（如果提供了更多数
         组，还会利用 <strong>$arrays</strong> 传入）。
         
         当仅仅传入一个数组时，返回的数组会保留传入参数的键（key）。 传入多个数组时，返回的数组键是
         按顺序的 integer。

<comment>See Also:</comment>
   * <strong>array_filter()</strong>
   * <strong>array_reduce()</strong>
   * <strong>array_walk()</strong>


id: array_merge
type: function
doc:
<comment>Description:</comment>
  合并一个或多个数组
  
  将一个或多个数组的单元合并起来，一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
  
  如果输入的数组中有相同的字符串键名，则该键名后面的值将覆盖前一个值。然而，如果数组包含数字键名，后
  面的值将 不会 覆盖原来的值，而是附加到后面。
  
  如果输入的数组存在以数字作为索引的内容，则这项内容的键名会以连续方式重新索引。

<comment>Param:</comment>
  <info>array</info>  <strong>$arrays</strong>  要合并的数组。

<comment>Return:</comment>
  <info>array</info>  返回合并后的结果数组。如果参数为空，则返回空 <info>array</info>。

<comment>See Also:</comment>
   * <strong>array_merge_recursive()</strong>
   * <strong>array_replace()</strong>
   * <strong>array_combine()</strong>
   * 数组操作符


id: array_merge_recursive
type: function
doc:
<comment>Description:</comment>
  递归地合并一个或多个数组
  
  <strong>array_merge_recursive()</strong> 将一个或多个数组的单元合并起来，一个数组中的值附加在前一个数组的后面。返回
  作为结果的数组。
  
  如果输入的数组中有相同的字符串键名，则这些值会被合并到一个数组中去，这将递归下去，因此如果一个值本
  身是一个数组，本函数将按照相应的条目把它合并为另一个数组。需要注意的是，如果数组具有相同的数值键
  名，后一个值将不会覆盖原来的值，而是附加到后面。

<comment>Param:</comment>
  <info>array</info>  <strong>$arrays</strong>  数组变量列表，进行递归合并。

<comment>Return:</comment>
  <info>array</info>  一个结果数组，其中的值合并自附加的参数。如果未传递参数调用，则会返回一个空 <info>array</info>。

<comment>See Also:</comment>
   * <strong>array_merge()</strong>
   * <strong>array_replace_recursive()</strong>


id: array_multisort
type: function
doc:
<comment>Description:</comment>
  对多个数组或多维数组进行排序
  
  <strong>array_multisort()</strong> 可以用来一次对多个数组进行排序，或者根据某一维或多维对多维数组进行排序。
  
  关联（<info>string</info>）键名保持不变，但数字键名会被重新索引。
  
  如果两个成员完全相同，那么它们将保持原来的顺序。 在 PHP 8.0.0 之前，它们在排序数组中的相对顺序是未
  定义的。

<comment>Param:</comment>
  <info>array</info>  <strong>$array1</strong>             要排序的 <info>array</info>。
  <info>mixed</info>  <strong>$array1_sort_order</strong>  之前 <info>array</info>  参数要排列的顺序。 <info>SORT_ASC</info> 按照上升顺序排序， <info>SORT_DESC</info> 按
                             照下降顺序排序。
                             
                             此参数可以和 <strong>$array1_sort_flags</strong> 互换，也可以完全删除，默认是 <info>SORT_ASC</info>
                             。
  <info>mixed</info>  <strong>$array1_sort_flags</strong>  为 <info>array</info> 参数设定选项：
                             
                             排序类型标志： <info>SORT_REGULAR</info> -  将项目按照通常方法比较（不修改类型）
                             <info>SORT_NUMERIC</info> - 按照数字大小比较<info>SORT_STRING</info> -  按照字符串比较
                             <info>SORT_LOCALE_STRING</info> -  根据当前的本地化设置，按照字符串比较。  它会使用
                             locale 信息，可以通过 <strong>setlocale()</strong> 修改此信息。 <info>SORT_NATURAL</info> - 以字符串
                             的"自然排序"，类似 <strong>natsort()</strong> <info>SORT_FLAG_CASE</info> - 可以组合 (按位或 OR)
                             <info>SORT_STRING</info> 或者 <info>SORT_NATURAL</info> 大小写不敏感的方式排序字符串。
                             
                             <info>SORT_REGULAR</info> -  将项目按照通常方法比较（不修改类型）
                             
                             <info>SORT_NUMERIC</info> - 按照数字大小比较
                             
                             <info>SORT_STRING</info> -  按照字符串比较
                             
                             <info>SORT_LOCALE_STRING</info> -  根据当前的本地化设置，按照字符串比较。  它会使用
                             locale 信息，可以通过 <strong>setlocale()</strong> 修改此信息。
                             
                             <info>SORT_NATURAL</info> - 以字符串的"自然排序"，类似 <strong>natsort()</strong>
                             
                             <info>SORT_FLAG_CASE</info> - 可以组合 (按位或 OR)  <info>SORT_STRING</info> 或者 <info>SORT_NATURAL</info> 大
                             小写不敏感的方式排序字符串。
                             
                             参数可以和 <strong>$array1_sort_order</strong> 交换或者省略，默认情况下是 <info>SORT_REGULAR</info>。
  <info>mixed</info>  <strong>$rest</strong>               可选的选项，可提供更多数组，跟随在 sort order 和 sort flag 之后。 提供
                             的数组和之前的数组要有相同数量的元素。 换言之，排序是按字典顺序排列的。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>usort()</strong>
   * 数组排序函数对比


id: array_pad
type: function
doc:
<comment>Description:</comment>
  以指定长度将一个值填充进数组
      
  
  <strong>array_pad()</strong> 返回 <strong>$array</strong> 的一个拷贝，并用 <strong>$value</strong> 将其填补到 <strong>$length</strong> 指定的长度。如果 <strong>$length</strong> 为正，
  则填补到数组的右侧，如果为负则从左侧开始填补。如果 <strong>$length</strong> 的绝对值小于或等于 <strong>$array</strong> 数组的长度则
  没有任何填补。有可能一次最多填补 1048576 个单元。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   需要被填充的原始数组。
  <info>int</info>    <strong>$length</strong>  新数组的长度。
  <info>mixed</info>  <strong>$value</strong>   将被填充的值，只有在 <strong>$array</strong> 的现有长度小于 <strong>$length</strong> 的长度时才有效。

<comment>Return:</comment>
  <info>array</info>  返回 <strong>$array</strong> 用  <strong>$value</strong> 填充到 <strong>$length</strong> 指定的长度之后的一个副本。如果 <strong>$length</strong> 为正，则填补到
         数组的右侧，如果为负则从左侧开始填补。如果 <strong>$length</strong> 的绝对值小于或等于 <strong>$array</strong> 数组的长度则没
         有任何填补。

<comment>See Also:</comment>
   * <strong>array_fill()</strong>
   * <strong>range()</strong>


id: array_pop
type: function
doc:
<comment>Description:</comment>
  弹出数组最后一个单元（出栈）
  
  <strong>array_pop()</strong> 弹出并返回 <strong>$array</strong> 最后一个元素的值，并将 <strong>$array</strong> 的长度减一。
  
  使用此函数后会重置（<strong>reset()</strong>）<info>array</info>
  指针。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  需要弹出栈的数组。

<comment>Return:</comment>
  <info>mixed</info>  返回 <strong>$array</strong> 最后一个元素的值。如果 <strong>$array</strong> 是空，将会返回 <info>null</info> 。

<comment>See Also:</comment>
   * <strong>array_push()</strong>
   * <strong>array_shift()</strong>
   * <strong>array_unshift()</strong>


id: array_product
type: function
doc:
<comment>Description:</comment>
  计算数组中所有值的乘积
  
  <strong>array_product()</strong> 以整数或浮点数返回一个数组中所有值的乘积。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  这个数组。

<comment>Return:</comment>
  <info>int|float</info>  以整数或浮点数返回一个数组中所有值的乘积。


id: array_push
type: function
doc:
<comment>Description:</comment>
  将一个或多个单元压入数组的末尾（入栈）
    
  
  <strong>array_push()</strong> 将 <strong>$array</strong> 当成一个栈，并将传入的变量压入 <strong>$array</strong> 的末尾。<strong>$array</strong> 的长度将根据入栈变量的
  数目增加。和如下效果相同：
  ]]> 并对每个传入的值重复以上动作。
  
  如果用 <strong>array_push()</strong> 来给数组增加一个单元，还不如用 <return>$array[] = </return>，因为这样没有调用函数的额外负担。
  
  如果第一个参数不是数组，<strong>array_push()</strong> 将发出一条警告。这和 <return>$var[]</return> 的行为不同，在 PHP 7.1.0 之前的版
  本中，后者将会新建一个数组。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   输入的数组。
  <info>mixed</info>  <strong>$value1</strong>  要压入 <strong>$array</strong> 末尾的第一个值。

<comment>Return:</comment>
  <info>int</info>  返回处理之后数组的元素个数。

<comment>See Also:</comment>
   * <strong>array_pop()</strong>
   * <strong>array_shift()</strong>
   * <strong>array_unshift()</strong>


id: array_rand
type: function
doc:
<comment>Description:</comment>
  从数组中随机取出一个或多个随机键
  
  从数组中取出一个或多个随机的单元，并返回随机条目对应的键（一个或多个）。
  
  本函数并不会生成安全加密的值，并且不可用于加密或者要求返回值不可猜测的目的。
  
  如果需要加密安全随机，则可以将 <class>Random\Engine\Secure</class> 引擎用于 <class>Random\Randomizer</class>。对于简单的用例，
  <strong>random_int()</strong> 和 <strong>random_bytes()</strong> 函数提供了操作系统的 CSPRNG 支持的方便且安全的 API。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  输入的数组。
  <info>int</info>    <strong>$num</strong>    指定要取出的单元数量。

<comment>Return:</comment>
  <info>int|string|array</info>  如果只取出一个，<strong>array_rand()</strong> 返回随机单元的键名。 否则就返回包含随机键名的数组。
                    完成后，就可以根据随机的键获取数组的随机值。 如果返回的是包含随机键名的数组，数
                    组单元的顺序按照键名在原数组中的顺序排列。 取出数量如果超过 array 的长度，就会导
                    致 <info>E_WARNING</info> 错误，并返回 NULL。

<comment>See Also:</comment>
   * <strong>Random\Randomizer::pickArrayKeys()</strong>
   * <strong>Random\Randomizer::shuffleArray()</strong>


id: array_reduce
type: function
doc:
<comment>Description:</comment>
  用回调函数迭代地将数组简化为单一的值
  
  <strong>array_reduce()</strong> 将回调函数 <strong>$callback</strong> 迭代地作用到 <strong>$array</strong> 数组中的每一个单元中，从而将数组简化为单一
  的值。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>     输入的 array。
  <info>callable</info>  <strong>$callback</strong>  携带上次迭代的返回值； 如果本次迭代是第一次，那么这个值是 <strong>$initial</strong>。
                       
                       携带了本次迭代的值。
  <info>mixed</info>     <strong>$carry</strong>     携带上次迭代的返回值； 如果本次迭代是第一次，那么这个值是 <strong>$initial</strong>。
  <info>mixed</info>     <strong>$item</strong>      携带了本次迭代的值。
  <info>mixed</info>     <strong>$initial</strong>   如果指定了可选参数 <strong>$initial</strong>，该参数将用作处理开始时的初始值，如果数组为空，则
                       会作为最终结果返回。

<comment>Return:</comment>
  <info>mixed</info>  返回结果值。
         
         如果数组为空，并且没有指定 <strong>$initial</strong> 参数，<strong>array_reduce()</strong> 返回 <info>null</info>。

<comment>See Also:</comment>
   * <strong>array_filter()</strong>
   * <strong>array_map()</strong>
   * <strong>array_unique()</strong>
   * <strong>array_count_values()</strong>


id: array_replace
type: function
doc:
<comment>Description:</comment>
  使用传递的数组替换第一个数组的元素
  
  <strong>array_replace()</strong> 函数使用后面数组元素相同 key 的值替换 <strong>$array</strong> 数组的值。如果一个键存在于第一个数组
  同时也存在于第二个数组，它的值将被第二个数组中的值替换。如果一个键存在于第二个数组，但是不存在于第
  一个数组，则会在第一个数组中创建这个元素。如果一个键仅存在于第一个数组，它将保持不变。如果传递了多
  个替换数组，它们将被按顺序依次处理，后面的数组将覆盖之前的值。
  
  <strong>array_replace()</strong> 是非递归的：它将第一个数组的值进行替换而不管第二个数组中是什么类型。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>         替换该数组的值。
  <info>array</info>  <strong>$replacements</strong>  包含要提取元素的数组。 后面的数组里的值会覆盖前面的值。

<comment>Return:</comment>
  <info>array</info>  返回 <info>array</info>。

<comment>See Also:</comment>
   * <strong>array_replace_recursive()</strong>
   * <strong>array_merge()</strong>


id: array_replace_recursive
type: function
doc:
<comment>Description:</comment>
  使用传递的数组递归替换第一个数组的元素
  
  <strong>array_replace_recursive()</strong> 使用后面数组元素的值替换数组 <strong>$array</strong> 的值。 如果一个键存在于第一个数组同
  时也存在于第二个数组，它的值将被第二个数组中的值替换。 如果一个键存在于第二个数组，但是不存在于第
  一个数组，则会在第一个数组中创建这个元素。 如果一个键仅存在于第一个数组，它将保持不变。 如果传递了
  多个替换数组，它们将被按顺序依次处理，后面的数组将覆盖之前的值。
  
  <strong>array_replace_recursive()</strong> 是递归的：它将遍历数组并将相同的处理应用到数组的内部值。
  
  如果第一个数组中的值是标量，它的值将被第二个数组中的值替换，它可能是一个标量或者数组。如果第一个数
  组和第二个数组中的值都是数组， <strong>array_replace_recursive()</strong> 函数将递归地替换它们各自的值。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>         替换该数组的值。
  <info>array</info>  <strong>$replacements</strong>  包含要提取元素的数组。

<comment>Return:</comment>
  <info>array</info>  返回 <info>array</info>。

<comment>See Also:</comment>
   * <strong>array_replace()</strong>
   * <strong>array_merge_recursive()</strong>


id: array_reverse
type: function
doc:
<comment>Description:</comment>
  返回单元顺序相反的数组
      
  
  <strong>array_reverse()</strong> 接受数组 <strong>$array</strong> 作为输入并返回一个单元为相反顺序的新数组。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>          输入的数组。
  <info>bool</info>   <strong>$preserve_keys</strong>  如果设置为 <info>true</info> 会保留数字的键。 非数字的键则不受这个设置的影响，总是会被保
                         留。

<comment>Return:</comment>
  <info>array</info>  返回反转后的数组。

<comment>See Also:</comment>
   * <strong>array_flip()</strong>


id: array_search
type: function
doc:
<comment>Description:</comment>
  在数组中搜索给定的值，如果成功则返回首个相应的键名
      
  
  在 <strong>$haystack</strong> 中搜索 <strong>$needle</strong>。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$needle</strong>    搜索的值。
                    
                    如果 <strong>$needle</strong> 是字符串，则比较以区分大小写的方式进行。
  <info>array</info>  <strong>$haystack</strong>  这个数组。
  <info>bool</info>   <strong>$strict</strong>    如果可选的第三个参数 <strong>$strict</strong> 为 <info>true</info>，则 <strong>array_search()</strong> 将在 <strong>$haystack</strong> 中检查完
                    全相同的元素。 这意味着同样严格比较 <strong>$haystack</strong> 里 <strong>$needle</strong> 的 类型，并且对象需是同
                    一个实例。

<comment>Return:</comment>
  <info>int|string|false</info>  如果找到了 <strong>$needle</strong> 则返回它的键，否则返回 <info>false</info>。
                    
                    如果 <strong>$needle</strong> 在 <strong>$haystack</strong> 中出现不止一次，则返回第一个匹配的键。要返回所有匹配值
                    的键，应该用 <strong>array_keys()</strong> 加上可选参数 <strong>$search_value</strong> 来代替。
                    
                    此函数可能返回布尔值
                    <info>false</info>，但也可能返回等同于 <info>false</info> 的非布尔值。请阅读 布尔类型章节以获取更多信息。
                    应使用
                    ===
                    运算符来测试此函数的返回值。

<comment>See Also:</comment>
   * <strong>array_keys()</strong>
   * <strong>array_values()</strong>
   * <strong>array_key_exists()</strong>
   * <strong>in_array()</strong>


id: array_shift
type: function
doc:
<comment>Description:</comment>
  将数组开头的单元移出数组
      
  
  <strong>array_shift()</strong> 将 <strong>$array</strong> 的第一个单元移出并作为结果返回，将 <strong>$array</strong> 的长度减一并将所有其它单元向前移
  动一位。所有的数字键名将改为从零开始计数，文字键名将不变。
  
  使用此函数后会重置（<strong>reset()</strong>）<info>array</info>
  指针。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  输入的数组。

<comment>Return:</comment>
  <info>mixed</info>  返回移出的值，如果 <strong>$array</strong> 为 空或不是一个数组则返回 <info>null</info>。

<comment>See Also:</comment>
   * <strong>array_unshift()</strong>
   * <strong>array_push()</strong>
   * <strong>array_pop()</strong>


id: array_slice
type: function
doc:
<comment>Description:</comment>
  从数组中取出一段
  
  <strong>array_slice()</strong> 返回根据 <strong>$offset</strong> 和 <strong>$length</strong> 参数所指定的 <strong>$array</strong> 数组中的一段序列。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>          输入的数组。
  <info>int</info>       <strong>$offset</strong>         如果 <strong>$offset</strong> 非负，则序列将从 <strong>$array</strong> 中的此偏移量开始。
                            
                            如果 <strong>$offset</strong> 为负，则序列将从 <strong>$array</strong> 中距离末端这么远的地方开始。
                            
                            参数 <strong>$offset</strong> 标识的是数组中的位置，而不是键。
  <info>int|null</info>  <strong>$length</strong>         如果给出了 <strong>$length</strong> 并且为正，则序列中将具有这么多的单元。
                            
                            如果 array 比 <strong>$length</strong> 要短，只会保留有效的数组单元。
                            
                            如果给出了 <strong>$length</strong> 并且为负，则序列将终止在距离数组末端这么远的地方。
                            
                            如果省略，则序列将从 <strong>$offset</strong> 开始一直到 <strong>$array</strong> 的末端。
  <info>bool</info>      <strong>$preserve_keys</strong>  注意 <strong>array_slice()</strong> 默认会重新排序并重置数组的数字索引。你可以通过将
                            <strong>$preserve_keys</strong> 设为 <info>true</info> 来改变此行为。 无论本参数如何设置，都会保留字符
                            串的键。

<comment>Return:</comment>
  <info>array</info>  返回其中一段。 如果 offset 参数大于 array 尺寸，就会返回空的 array。

<comment>See Also:</comment>
   * <strong>array_splice()</strong>
   * <strong>unset()</strong>
   * <strong>array_chunk()</strong>


id: array_splice
type: function
doc:
<comment>Description:</comment>
  去掉数组中的某一部分并用其它值取代
      
  
  把 <strong>$array</strong> 数组中由 <strong>$offset</strong> 和 <strong>$length</strong> 指定的单元去掉，如果提供了 <strong>$replacement</strong> 参数，则用其中的单元
  取代。
  
  <strong>$array</strong> 中的数字键名不被保留。
  
  如果 <strong>$replacement</strong> 不是数组，会被 类型转换 成数组 (例如： (array) $replacement)。 当传入的
  <strong>$replacement</strong> 是个对象或者 <info>null</info>，会导致未知的行为出现。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>        输入的数组。
  <info>int</info>       <strong>$offset</strong>       如果 <strong>$offset</strong> 为正，则从 <strong>$array</strong> 数组中该值指定的偏移量开始移除。
                          
                          如果 <strong>$offset</strong> 为负，则从 <strong>$array</strong> 末尾倒数该值指定的偏移量开始移除。
  <info>int|null</info>  <strong>$length</strong>       如果省略 <strong>$length</strong>，则移除数组中从 <strong>$offset</strong> 到结尾的所有部分。
                          
                          如果指定了 <strong>$length</strong> 并且为正值，则移除这么多单元。
                          
                          如果指定了 <strong>$length</strong> 并且为负值，则移除部分停止于数组末尾该数量的单元。
                          
                          如果设置了 <strong>$length</strong> 为零，不会移除单元。
                          
                          当给出了 <strong>$replacement</strong> 时要移除从 <strong>$offset</strong> 到数组末尾所有单元时，用
                          <return>count($input)</return> 作为 <strong>$length</strong>。
  <info>mixed</info>     <strong>$replacement</strong>  如果给出了 <strong>$replacement</strong> 数组，则被移除的单元被此数组中的单元替代。
                          
                          如果 <strong>$offset</strong> 和 <strong>$length</strong> 的组合结果是不会移除任何值，则 <strong>$replacement</strong> 数组中
                          的单元将被插入到 <strong>$offset</strong> 指定的位置。
                          
                          不保留替换数组 <strong>$replacement</strong> 中的键名。
                          
                          如果用来替换 <strong>$replacement</strong> 只有一个单元，那么不需要给它加上 <return>array()</return> 或方括
                          号，除非该单元本身就是一个数组、一个对象或者 <info>null</info>。

<comment>Return:</comment>
  <info>array</info>  返回一个包含有被移除单元的数组。

<comment>See Also:</comment>
   * <strong>array_merge()</strong>
   * <strong>array_slice()</strong>
   * <strong>unset()</strong>


id: array_sum
type: function
doc:
<comment>Description:</comment>
  对数组中所有值求和
      
  
  <strong>array_sum()</strong> 将数组中的所有值相加，并返回结果。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  输入的数组。

<comment>Return:</comment>
  <info>int|float</info>  所有值的和以整数或浮点数的结果返回，<strong>$array</strong> 为空时则返回 <return>0</return>。


id: array_udiff
type: function
doc:
<comment>Description:</comment>
  用回调函数比较数据来计算数组的差集
  
  使用回调函数比较数据，计算数组的不同之处。和 <strong>array_diff()</strong> 不同的是，前者使用内置函数进行数据比较。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>               第一个数组。
  <info>array</info>     <strong>$arrays</strong>              要对比的数组。
  <info>callable</info>  <strong>$value_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回
                                 一个小于，等于或大于 0 的整数。
                                 
                                 从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                                 返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，
                                 将这些值比较的话将会是相等。

<comment>Return:</comment>
  <info>array</info>  返回 <strong>$array</strong> 里没有出现在其他参数里的所有值。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_diff_uassoc()</strong>
   * <strong>array_udiff_assoc()</strong>
   * <strong>array_udiff_uassoc()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_uintersect()</strong>
   * <strong>array_uintersect_assoc()</strong>
   * <strong>array_uintersect_uassoc()</strong>


id: array_udiff_assoc
type: function
doc:
<comment>Description:</comment>
  带索引检查计算数组的差集，用回调函数比较数据
  
  此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于，等于，或大于第二个参数时必须分别返
  回一个小于零，等于零，或大于零的整数。
  
  注意本函数只检查了多维数组中的一维。当然，可以用 <return>array_udiff_assoc($array1[0], $array2[0],
  "some_comparison_func");</return> 来检查更深的维度。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>               第一个数组。
  <info>array</info>     <strong>$arrays</strong>              要比较的数组。
  <info>callable</info>  <strong>$value_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回
                                 一个小于，等于或大于 0 的整数。
                                 
                                 从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                                 返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，
                                 将这些值比较的话将会是相等。

<comment>Return:</comment>
  <info>array</info>  <strong>array_udiff_assoc()</strong> 返回一个数组，该数组包括了所有在 <strong>$array</strong> 中但是不在任何其它参数数组中的
         值。注意和 <strong>array_diff()</strong> 与 <strong>array_udiff()</strong> 不同的是键名也用于比较。数组数据的比较是用用户提供
         的回调函数进行的。在此方面和 <strong>array_diff_assoc()</strong> 的行为正好相反，后者是用内部函数进行比较
         的。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_diff_uassoc()</strong>
   * <strong>array_udiff()</strong>
   * <strong>array_udiff_uassoc()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_uintersect()</strong>
   * <strong>array_uintersect_assoc()</strong>
   * <strong>array_uintersect_uassoc()</strong>


id: array_udiff_uassoc
type: function
doc:
<comment>Description:</comment>
  带索引检查计算数组的差集，用回调函数比较数据和索引
  
  <strong>array_udiff_uassoc()</strong> 返回一个数组，该数组包括了所有在 <strong>$array1</strong> 中但是不在任何其它参数数组中的值。
  
  注意和 <strong>array_diff()</strong> 与 <strong>array_udiff()</strong> 不同的是键名也用于比较。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>               第一个数组。
  <info>array</info>     <strong>$arrays</strong>              要比较的数组。
  <info>callable</info>  <strong>$value_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回
                                 一个小于，等于或大于 0 的整数。
                                 
                                 从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                                 返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，
                                 将这些值比较的话将会是相等。
  <info>callable</info>  <strong>$key_compare_func</strong>    对键名（索引）的检查也是由回调函数 <strong>$key_compare_func</strong> 进行的。这和
                                 <strong>array_udiff_assoc()</strong> 的行为不同，后者是用内部函数比较索引的。

<comment>Return:</comment>
  <info>array</info>  返回一个 <info>array</info>，包含 <strong>$array</strong> 里没有出现在其他参数里的所有值。

<comment>See Also:</comment>
   * <strong>array_diff()</strong>
   * <strong>array_diff_assoc()</strong>
   * <strong>array_udiff()</strong>
   * <strong>array_udiff_assoc()</strong>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_uintersect()</strong>
   * <strong>array_uintersect_assoc()</strong>
   * <strong>array_uintersect_uassoc()</strong>


id: array_uintersect
type: function
doc:
<comment>Description:</comment>
  计算数组的交集，用回调函数比较数据
  
  <strong>array_uintersect()</strong> 返回一个数组，该数组包含了所有在 <strong>$array1</strong> 中也同时出现在所有其它参数数组中的值。
  数据比较是用回调函数进行的。 此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于，等
  于，或大于第二个参数时必须分别返回一个小于零，等于零，或大于零的整数。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>               第一个数组。
  <info>array</info>     <strong>$arrays</strong>              要比较的数组。
  <info>callable</info>  <strong>$value_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回
                                 一个小于，等于或大于 0 的整数。
                                 
                                 从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                                 返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，
                                 将这些值比较的话将会是相等。

<comment>Return:</comment>
  <info>array</info>  返回一个数组，数组中包含了 <strong>$array</strong> 中在所有的参数中都存在的值。

<comment>See Also:</comment>
   * <strong>array_intersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_uintersect_assoc()</strong>
   * <strong>array_uintersect_uassoc()</strong>


id: array_uintersect_assoc
type: function
doc:
<comment>Description:</comment>
  带索引检查计算数组的交集，用回调函数比较数据
  
  此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于，等于，或大于第二个参数时必须分别返
  回一个小于零，等于零，或大于零的整数。
  
  注意和 <strong>array_uintersect()</strong> 不同的是键名也要比较。数据是用回调函数比较的。

<comment>Param:</comment>
  <info>array</info>     <strong>$array</strong>               第一个数组。
  <info>array</info>     <strong>$arrays</strong>              要比较的数组。
  <info>callable</info>  <strong>$value_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回
                                 一个小于，等于或大于 0 的整数。
                                 
                                 从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                                 返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，
                                 将这些值比较的话将会是相等。

<comment>Return:</comment>
  <info>array</info>  返回一个数组，该数组包含了所有在 <strong>$array</strong> 中也同时出现在所有其它参数数组中的值。

<comment>See Also:</comment>
   * <strong>array_uintersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_intersect_uassoc()</strong>
   * <strong>array_uintersect_uassoc()</strong>


id: array_uintersect_uassoc
type: function
doc:
<comment>Description:</comment>
  带索引检查计算数组的交集，用单独的回调函数比较数据和索引
  
  通过额外的索引检查、回调函数比较数据和索引来返回多个数组的交集。

<comment>Param:</comment>
  <info>array</info>     <strong>$array1</strong>              第一个数组。
  <info>array</info>     <strong>$arrays</strong>              更多数组。
  <info>callable</info>  <strong>$value_compare_func</strong>  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回
                                 一个小于，等于或大于 0 的整数。
                                 
                                 从比较函数中返回非整数值，例如 <info>float</info>，将导致内部强制转换为 callback
                                 返回值为 <info>int</info>。因此，诸如 <return>0.99</return> 和 <return>0.1</return> 之类的值都将被转换为整数值 <return>0</return>，
                                 将这些值比较的话将会是相等。
  <info>callable</info>  <strong>$key_compare_func</strong>    键名比较的回调函数。

<comment>Return:</comment>
  <info>array</info>  返回一个数组，该数组包含了所有在 <strong>$array1</strong> 中也同时出现在所有其它参数数组中的值。

<comment>See Also:</comment>
   * <strong>array_uintersect()</strong>
   * <strong>array_intersect_assoc()</strong>
   * <strong>array_intersect_uassoc()</strong>
   * <strong>array_uintersect_assoc()</strong>


id: array_unique
type: function
doc:
<comment>Description:</comment>
  移除数组中重复的值
  
  <strong>array_unique()</strong> 接受 <strong>$array</strong> 作为输入并返回没有重复值的新数组。
  
  注意键名保留不变。如果在指定了 <strong>$flags</strong> 时存在多个相等的元素， 会保留第一个相等的元素的键（key）和值
  （value）。
  
  当且仅当 <return>(string) $elem1 === (string) $elem2</return> 时两个单元被认为相同。 例如，字符串表达一样时，会使用
  首个元素。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  输入的数组。
  <info>int</info>    <strong>$flags</strong>  第二个可选参数<strong>$flags</strong> 可用于修改比较行为：
                 
                 比较类型标记： <info>SORT_REGULAR</info> - 按照通常方法比较（不修改类型）<info>SORT_NUMERIC</info> - 按照数字
                 形式比较<info>SORT_STRING</info> - 按照字符串形式比较<info>SORT_LOCALE_STRING</info> - 根据当前的本地化设置，
                 按照字符串比较。
                 
                 <info>SORT_REGULAR</info> - 按照通常方法比较（不修改类型）
                 
                 <info>SORT_NUMERIC</info> - 按照数字形式比较
                 
                 <info>SORT_STRING</info> - 按照字符串形式比较
                 
                 <info>SORT_LOCALE_STRING</info> - 根据当前的本地化设置，按照字符串比较。

<comment>Return:</comment>
  <info>array</info>  返回过滤后的数组。

<comment>See Also:</comment>
   * <strong>array_count_values()</strong>


id: array_unshift
type: function
doc:
<comment>Description:</comment>
  在数组开头插入一个或多个单元
  
  <strong>array_unshift()</strong> 将传入的单元插入到 <strong>$array</strong> 数组的开头。注意单元是作为整体被插入的，因此传入单元将保
  持同样的顺序。所有的数值键名将修改为从零开始重新计数，所有的文字键名保持不变。
  
  重置数组中的内部指针，指向第一个元素。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>   输入的数组。
  <info>mixed</info>  <strong>$values</strong>  插入的变量。

<comment>Return:</comment>
  <info>int</info>  返回 <strong>$array</strong> 数组新的单元数目。

<comment>See Also:</comment>
   * <strong>array_merge()</strong>
   * <strong>array_shift()</strong>
   * <strong>array_push()</strong>
   * <strong>array_pop()</strong>


id: array_values
type: function
doc:
<comment>Description:</comment>
  返回数组中所有的值
  
  <strong>array_values()</strong> 返回 <strong>$input</strong> 数组中所有的值并给其建立数字索引。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  数组。

<comment>Return:</comment>
  <info>array</info>  返回含所有值的索引数组。

<comment>See Also:</comment>
   * <strong>array_keys()</strong>
   * <strong>array_combine()</strong>


id: array_walk
type: function
doc:
<comment>Description:</comment>
  使用用户自定义函数对数组中的每个元素做回调处理
  
  将用户自定义函数 <strong>$callback</strong> 应用到 <strong>$array</strong> 数组中的每个单元。
  
  <strong>array_walk()</strong> 不会受到 <strong>$array</strong> 内部数组指针的影响。<strong>array_walk()</strong> 会遍历整个数组而不管指针的位置。

<comment>Param:</comment>
  <info>array|object</info>  <strong>$array</strong>     输入的数组。
  <info>callable</info>      <strong>$callback</strong>  典型情况下 <strong>$callback</strong> 接受两个参数。<strong>$array</strong> 参数的值作为第一个，键名作为第
                           二个。
                           
                           如果 <strong>$callback</strong> 需要直接作用于数组中的值，则给 <strong>$callback</strong> 的第一个参数指定
                           为引用。这样任何对这些单元的改变也将会改变原始数组本身。
                           
                           参数数量超过预期，传入内置函数 (例如 <strong>strtolower()</strong>)， 将抛出警告，所以不适
                           合当做 <strong>$callback</strong>。
                           
                           只有 <strong>$array</strong> 的值才可以被改变，用户不应在回调函数中改变该数组本身的结构。
                           例如增加/删除单元，unset 单元等等。如果 <strong>array_walk()</strong> 作用的数组改变了，则
                           此函数的的行为未经定义，且不可预期。
  <info>mixed</info>         <strong>$arg</strong>       如果提供了可选参数 <strong>$arg</strong>，将被作为第三个参数传递给 <strong>$callback</strong>。

<comment>Return:</comment>
  <info>bool</info>  返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>array_walk_recursive()</strong>
   * <strong>iterator_apply()</strong>
   * <strong>list()</strong>
   * <strong>each()</strong>
   * <strong>call_user_func_array()</strong>
   * <strong>array_map()</strong>
   * foreach


id: array_walk_recursive
type: function
doc:
<comment>Description:</comment>
  对数组中的每个成员递归地应用用户函数
  
  将用户自定义函数 <strong>$callback</strong> 应用到 <strong>$array</strong> 数组中的每个单元。本函数会递归到更深层的数组中去。

<comment>Param:</comment>
  <info>array|object</info>  <strong>$array</strong>     输入的数组。
  <info>callable</info>      <strong>$callback</strong>  典型情况下 <strong>$callback</strong> 接受两个参数。<strong>$array</strong> 参数的值作为第一个，键名作为第
                           二个。
                           
                           如果 <strong>$callback</strong> 需要直接作用于数组中的值，则给 <strong>$callback</strong> 的第一个参数指定
                           为引用。这样任何对这些单元的改变也将会改变原始数组本身。
  <info>mixed</info>         <strong>$arg</strong>       如果提供了可选参数 <strong>$arg</strong>，将被作为第三个参数传递给 <strong>$callback</strong>。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>array_walk()</strong>


id: arsort
type: function
doc:
<comment>Description:</comment>
  对数组进行降向排序并保持索引关系
  
  对 <strong>$array</strong> 本身按照降序排序，并保持数组的键与值之间的关联。
  
  主要用于对那些单元顺序很重要的结合数组进行排序。
  
  如果两个成员完全相同，那么它们将保持原来的顺序。 在 PHP 8.0.0 之前，它们在排序数组中的相对顺序是未
  定义的。
  
  重置数组中的内部指针，指向第一个元素。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  输入的数组。
  <info>int</info>    <strong>$flags</strong>  可选的第二个参数 <strong>$flags</strong> 可以用以下值改变排序的行为：
                 
                 排序类型标记： <info>SORT_REGULAR</info>  - 正常比较单元 详细描述参见 比较运算符 章节
                 <info>SORT_NUMERIC</info> - 单元被作为数字来比较<info>SORT_STRING</info> - 单元被作为字符串来比较
                 <info>SORT_LOCALE_STRING</info> - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用
                 <strong>setlocale()</strong> 来改变。 <info>SORT_NATURAL</info> - 和 <strong>natsort()</strong> 类似对每个单元以“自然的顺序”对字符
                 串进行排序。 <info>SORT_FLAG_CASE</info> - 能够与 <info>SORT_STRING</info> 或 <info>SORT_NATURAL</info> 合并（OR 位运
                 算），不区分大小写排序字符串。
                 
                 <info>SORT_REGULAR</info>  - 正常比较单元 详细描述参见 比较运算符 章节
                 
                 <info>SORT_NUMERIC</info> - 单元被作为数字来比较
                 
                 <info>SORT_STRING</info> - 单元被作为字符串来比较
                 
                 <info>SORT_LOCALE_STRING</info> - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用
                 <strong>setlocale()</strong> 来改变。
                 
                 <info>SORT_NATURAL</info> - 和 <strong>natsort()</strong> 类似对每个单元以“自然的顺序”对字符串进行排序。
                 
                 <info>SORT_FLAG_CASE</info> - 能够与 <info>SORT_STRING</info> 或 <info>SORT_NATURAL</info> 合并（OR 位运算），不区分大小写
                 排序字符串。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>sort()</strong>
   * <strong>asort()</strong>
   * 数组排序函数对比


id: asin
type: function
doc:
<comment>Description:</comment>
  反正弦
  
  返回 <strong>$num</strong> 的反正弦值，单位是弧度。<strong>asin()</strong> 是 <strong>sin()</strong> 的反函数，它的意思是对于 <strong>asin()</strong> 的定义域中的每个
  <strong>$num</strong> 值，$num == sin(asin($num))。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  待处理的参数

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 的反正弦弧度。

<comment>See Also:</comment>
   * <strong>sin()</strong>
   * <strong>asinh()</strong>
   * <strong>acos()</strong>
   * <strong>atan()</strong>


id: asinh
type: function
doc:
<comment>Description:</comment>
  反双曲正弦
  
  返回 <strong>$num</strong> 的反双曲正弦值，即，其双曲正弦为 <strong>$num</strong> 的那个值。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  要处理的参数

<comment>Return:</comment>
  <info>float</info>  返回 <strong>$num</strong> 的反双曲正弦

<comment>See Also:</comment>
   * <strong>sinh()</strong>
   * <strong>asin()</strong>
   * <strong>acosh()</strong>
   * <strong>atanh()</strong>


id: asort
type: function
doc:
<comment>Description:</comment>
  对数组进行升序排序并保持索引关系
  
  对 <strong>$array</strong> 自身按照升序进行排序，并依然保持数组的键与值的关联。
  
  主要用于对那些单元顺序很重要的关联数组进行排序。
  
  如果两个成员完全相同，那么它们将保持原来的顺序。 在 PHP 8.0.0 之前，它们在排序数组中的相对顺序是未
  定义的。
  
  重置数组中的内部指针，指向第一个元素。

<comment>Param:</comment>
  <info>array</info>  <strong>$array</strong>  输入的数组。
  <info>int</info>    <strong>$flags</strong>  可选的第二个参数 <strong>$flags</strong> 可以用以下值改变排序的行为：
                 
                 排序类型标记： <info>SORT_REGULAR</info>  - 正常比较单元 详细描述参见 比较运算符 章节
                 <info>SORT_NUMERIC</info> - 单元被作为数字来比较<info>SORT_STRING</info> - 单元被作为字符串来比较
                 <info>SORT_LOCALE_STRING</info> - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用
                 <strong>setlocale()</strong> 来改变。 <info>SORT_NATURAL</info> - 和 <strong>natsort()</strong> 类似对每个单元以“自然的顺序”对字符
                 串进行排序。 <info>SORT_FLAG_CASE</info> - 能够与 <info>SORT_STRING</info> 或 <info>SORT_NATURAL</info> 合并（OR 位运
                 算），不区分大小写排序字符串。
                 
                 <info>SORT_REGULAR</info>  - 正常比较单元 详细描述参见 比较运算符 章节
                 
                 <info>SORT_NUMERIC</info> - 单元被作为数字来比较
                 
                 <info>SORT_STRING</info> - 单元被作为字符串来比较
                 
                 <info>SORT_LOCALE_STRING</info> - 根据当前的区域（locale）设置来把单元当作字符串比较，可以用
                 <strong>setlocale()</strong> 来改变。
                 
                 <info>SORT_NATURAL</info> - 和 <strong>natsort()</strong> 类似对每个单元以“自然的顺序”对字符串进行排序。
                 
                 <info>SORT_FLAG_CASE</info> - 能够与 <info>SORT_STRING</info> 或 <info>SORT_NATURAL</info> 合并（OR 位运算），不区分大小写
                 排序字符串。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>sort()</strong>
   * <strong>arsort()</strong>
   * 数组排序函数对比


id: assert
type: function
doc:
<comment>Description:</comment>
  断言检测
  
  <strong>assert()</strong> 允许定义预期（expectations）：在开发和测试环境中生效的断言，但在生产环境中会优化掉以达到
  零成本。
  
  断言应该只用于调试功能。其中一个用例是检查健全性的前提条件，应该始终为 <info>true</info>，如果不满足这些条件，
  则表示存在某些编程错误。 另一个用例是确保某些功能的存在，例如扩展函数或某些系统限制和特性。
  
  由于断言可以配置为已消除，因此不应该用于普通运行时操作，比如检查输入参数。一般来说，代码应该在禁用
  断言检查的情况下仍然按预期运行。
  
  <strong>assert()</strong> 将检查 <strong>$assertion</strong> 中指定的预期（expectations）是否成立。如果不成立，也就是结果为 <info>false</info>，
  它将根据 <strong>assert()</strong> 的配置采取适当的操作。
  
  <strong>assert()</strong> 的行为由以下 INI 设置决定： 断言 配置选项名字默认说明更新日志zend.assertions<return>1</return><return>1</return>：生成并执
  行代码（开发模式） <return>0</return>：生成代码但在运行时跳转 <return>-1</return>：生成代码但在运行时跳转（生产模式）
  assert.active<info>true</info> 为 <info>false</info> 时，<strong>assert()</strong> 将不会检查预期（expectation）并且无条件返回 <info>true</info>。  自 PHP
  8.3.0 起弃用 assert.callback<info>null</info> 当断言失败时，将调用用户定义的函数，其签名应该是：
  <info>void</info>assert_callback<info>string</info><strong>$file</strong><info>int</info><strong>$line</strong><info>null</info><strong>$assertion</strong><info>string</info><strong>$description</strong>  在 PHP 8.0.0 之前，回调的
  签名应该是： <info>void</info>assert_callback<info>string</info><strong>$file</strong><info>int</info><strong>$line</strong><info>string</info><strong>$assertion</strong><info>string</info><strong>$description</strong> 自 PHP 8.3.0
  起弃用 assert.exception<info>true</info> 如果为 <info>true</info>，则如果不能满足预期（expectations），将抛出 <class>AssertionError</class>
  异常。  自 PHP 8.3.0 起弃用 assert.bail<info>false</info> 为 <info>true</info> 时，如果预期（expectation）不支持，将会中止
  PHP 脚本的执行。  自 PHP 8.3.0 起弃用 assert.warning<info>true</info> 为 <info>true</info> 时，则如果预期（expectation）不支
  持，将发出 <info>E_WARNING</info> 警告。如果启用了 assert.exception，此 INI 设置将无效。  自 PHP 8.3.0 起弃用

<comment>Param:</comment>
  <info>mixed</info>                  <strong>$assertion</strong>    可以是任何带返回值的表达式，运行后的结果用于表示断言成功还是
                                       失败。
                                       
                                       在 PHP 8.0.0 之前，如果 <strong>$assertion</strong> 是 <info>string</info>，将解释为 PHP 代
                                       码，并通过 <strong>eval()</strong> 执行。这个字符串将作为第三个参数传递给回调
                                       函数。这种行为在 PHP 7.2.0 中弃用，并在 PHP 8.0.0 中移除。
  <info>Throwable|string|null</info>  <strong>$description</strong>  如果 <strong>$description</strong> 是 <class>Throwable</class> 的实例，只有在 <strong>$assertion</strong> 执行
                                       失败时才会抛出。  自 PHP 8.0.0 开始，在调用可能定义的断言回调
                                       之前执行此操作。   自 PHP 8.0.0 开始，无论 assert.exception
                                       的配置如何，都将会抛出该 <info>object</info>。   自 PHP 8.0.0 开始，在这种
                                       情况下，assert.bail 设置不起作用。
                                       
                                       自 PHP 8.0.0 开始，在调用可能定义的断言回调之前执行此操作。
                                       
                                       自 PHP 8.0.0 开始，无论 assert.exception 的配置如何，都将会抛
                                       出该 <info>object</info>。
                                       
                                       自 PHP 8.0.0 开始，在这种情况下，assert.bail 设置不起作用。
                                       
                                       如果 <strong>$description</strong> 是 <info>string</info>，当发出异常或警告时，将使用该消
                                       息。 如果 <strong>$assertion</strong> 失败了，可选的 description 将会包括在失
                                       败信息里。
                                       
                                       如果省略 <strong>$description</strong>，  将在编译时创建默认 description，该
                                       description 等于对 <strong>assert()</strong> 调用的源代码。

<comment>Return:</comment>
  <info>bool</info>  <strong>assert()</strong> 总是返回 <info>true</info>，前提是以下条件中至少有一个为真：
        
        如果所有条件都不满足， <strong>assert()</strong> 将在 <strong>$assertion</strong> 为真时返回 <info>true</info>，否则返回 <info>false</info>。urn <info>true</info> if
        <strong>$assertion</strong> is truthy and <info>false</info> otherwise.

<comment>See Also:</comment>
   * <strong>assert_options()</strong>


id: assert_options
type: function
doc:
<comment>Description:</comment>
  设置/获取各种断言 flag
  
  设置 <strong>assert()</strong> 的各种控制选项，或者是仅仅查询当前的设置。
  
  不鼓励使用 <strong>assert_options()</strong>，而是分别使用 <strong>ini_set()</strong> 和 <strong>ini_get()</strong> 设置和获取 php.ini 指令
  zend.assertions 和 assert.exception。

<comment>Param:</comment>
  <info>int</info>          <strong>$option</strong>       断言选项选项INI 设置默认值描述ASSERT_ACTIVEassert.active1启用 <strong>assert()</strong>
                             断言ASSERT_EXCEPTIONassert.exception1每个失败断言，抛出
                             <class>AssertionError</class>ASSERT_WARNINGassert.warning1为每个失败的断言产生一个 PHP
                             警告（warning）ASSERT_BAILassert.bail0在断言失败时中止执行
                             ASSERT_QUIET_EVALassert.quiet_eval0 在断言表达式求值时禁用
                             error_reporting。PHP 8.0.0 起移除。
                             ASSERT_CALLBACKassert.callback(<info>null</info>)断言失败时调用回调函数
  <info>mixed</info>        <strong>$value</strong>        可选的新选项值。
                             
                             通过 <info>ASSERT_CALLBACK</info> 或 assert.callback 设置的回调函数应该有以下签名：
                             <info>void</info>assert_callback<info>string</info><strong>$file</strong><info>int</info><strong>$line</strong><info>string</info><info>null</info></info><strong>$assertion</strong><info>string</info><strong>$description</strong>
                             <strong>$file</strong> 调用 <strong>assert()</strong> 的文件名。 <strong>$line</strong> 调用 <strong>assert()</strong> 的行数。 <strong>$assertion</strong>
                             在 PHP 8.0.0 之前，传递给 <strong>assert()</strong> 的断言，仅作为字符串给出。 （如果断
                             言是 boolean 条件，则此参数将为空字符串。）从 PHP 8.0.0 开始，此参数始
                             终为 <info>null</info>。 <strong>$description</strong> 传递给 <strong>assert()</strong> 的描述。
                             
                             调用 <strong>assert()</strong> 的文件名。
                             
                             调用 <strong>assert()</strong> 的行数。
                             
                             在 PHP 8.0.0 之前，传递给 <strong>assert()</strong> 的断言，仅作为字符串给出。 （如果断
                             言是 boolean 条件，则此参数将为空字符串。）从 PHP 8.0.0 开始，此参数始
                             终为 <info>null</info>。
                             
                             传递给 <strong>assert()</strong> 的描述。
  <info>string</info>       <strong>$file</strong>         调用 <strong>assert()</strong> 的文件名。
  <info>int</info>          <strong>$line</strong>         调用 <strong>assert()</strong> 的行数。
  <info>string|null</info>  <strong>$assertion</strong>    在 PHP 8.0.0 之前，传递给 <strong>assert()</strong> 的断言，仅作为字符串给出。 （如果断
                             言是 boolean 条件，则此参数将为空字符串。）从 PHP 8.0.0 开始，此参数始
                             终为 <info>null</info>。
  <info>string</info>       <strong>$description</strong>  传递给 <strong>assert()</strong> 的描述。

<comment>Return:</comment>
  <info>mixed</info>  返回任意选项的原始设置。

<comment>See Also:</comment>
   * <strong>assert()</strong>


id: atan
type: function
doc:
<comment>Description:</comment>
  反正切
  
  返回 <strong>$num</strong> 的反正切值，单位是弧度。<strong>atan()</strong> 是 <strong>tan()</strong> 的反函数，它的意思是对于 <strong>atan()</strong> 的定义域中的每个
  <strong>$num</strong> 值，$num == tan(atan($num))。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  要处理的参数

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 的反正切弧度。

<comment>See Also:</comment>
   * <strong>tan()</strong>
   * <strong>atanh()</strong>
   * <strong>asin()</strong>
   * <strong>acos()</strong>


id: atan2
type: function
doc:
<comment>Description:</comment>
  两个参数的反正切
  
  本函数计算两个变量 <strong>$x</strong> 和 <strong>$y</strong> 的反正切值。和计算 <strong>$y</strong> / <strong>$x</strong> 的反正切相似，只除了两个参数的符号是用来确
  定结果的象限之外。
  
  本函数的结果为弧度，其值在 -PI 和 PI 之间（包括 -PI 和 PI）。

<comment>Param:</comment>
  <info>float</info>  <strong>$y</strong>  Dividend parameter
  <info>float</info>  <strong>$x</strong>  Divisor parameter

<comment>Return:</comment>
  <info>float</info>  <strong>$x</strong> 和 <strong>$y</strong> 的反正切弧度值。

<comment>See Also:</comment>
   * <strong>atan()</strong>


id: atanh
type: function
doc:
<comment>Description:</comment>
  反双曲正切
  
  返回 <strong>$num</strong> 的反双曲正切值，即，其双曲正切为 <strong>$num</strong> 的那个值。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  要处理的参数

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 的反双曲正切

<comment>See Also:</comment>
   * <strong>tanh()</strong>
   * <strong>atan()</strong>
   * <strong>asinh()</strong>
   * <strong>acosh()</strong>


id: base64_decode
type: function
doc:
<comment>Description:</comment>
  对使用 MIME base64 编码的数据进行解码
  
  对 base64 编码的 <strong>$string</strong> 进行解码。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  编码过的数据。
  <info>bool</info>    <strong>$strict</strong>  当设置 <strong>$strict</strong> 为 <info>true</info> 时，一旦输入的数据超出了 base64 字母表，将返回 <info>false</info>。 否
                   则会静默丢弃无效的字符。

<comment>Return:</comment>
  <info>string|false</info>  返回解码后数据， 或者在失败时返回 <info>false</info>。返回的数据可能是二进制的。

<comment>See Also:</comment>
   * <strong>base64_encode()</strong>
   * RFC 2045 的 6.8 章节。
     


id: base64_encode
type: function
doc:
<comment>Description:</comment>
  使用 MIME base64 对数据进行编码
  
  使用 base64 对 <strong>$string</strong> 进行编码。
  
  设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输，例如电子邮件的主体。
  
  Base64-encoded 数据要比原始数据多占用 33% 左右的空间。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  要编码的数据。

<comment>Return:</comment>
  <info>string</info>  编码后的字符串数据。

<comment>See Also:</comment>
   * <strong>base64_decode()</strong>
   * <strong>chunk_split()</strong>
   * <strong>convert_uuencode()</strong>
   * RFC 2045 6.8 章节


id: base_convert
type: function
doc:
<comment>Description:</comment>
  在任意进制之间转换数字
  
  返回字符串，包含 <strong>$num</strong> 以 <strong>$to_base</strong> 进制的表示。<strong>$num</strong> 本身的进制由 <strong>$from_base</strong> 指定。<strong>$from_base</strong> 和
  <strong>$to_base</strong> 都只能在 2 和 36 之间（包括 2 和 36）。高于十进制的数字用字母 a-z 表示，例如 a 表示 10，b
  表示 11 以及 z 表示 35。字母的大小无关紧要，即 <strong>$num</strong> 不区分大小写。
  
  由于使用内部的 <info>float</info> 类型，<strong>base_convert()</strong> 的操作可能会导致大数值中的精度丢失。请参见本手册的浮点数
  章节以便获得更多详细信息。

<comment>Param:</comment>
  <info>string</info>  <strong>$num</strong>        要转换的数字。<strong>$num</strong> 中的任何无效字符都会默认忽略。自 PHP 7.4.0 起，弃用使用任何
                      无效字符。
  <info>int</info>     <strong>$from_base</strong>  <strong>$num</strong> 的进制数
  <info>int</info>     <strong>$to_base</strong>    <strong>$num</strong> 要转换为的进制数

<comment>Return:</comment>
  <info>string</info>  <strong>$num</strong> 转换为 <strong>$to_base</strong> 进制

<comment>See Also:</comment>
   * <strong>intval()</strong>


id: basename
type: function
doc:
<comment>Description:</comment>
  返回路径中的文件名部分
  
  给出一个包含有指向一个文件的全路径的字符串，本函数返回基本的文件名。
  
  <strong>basename()</strong> 纯粹基于输入字符串操作， 它不会受实际文件系统和类似 "<return>..</return>" 的路径格式影响。
  
  <strong>basename()</strong> 是本地化的，所以如果要正确处理多字节字符的路径，需要用 <strong>setlocale()</strong> 正确设置匹配的
  locale。如果 <strong>$path</strong> 包含当前区域设置无效的字符，<strong>basename()</strong> 的行为未定义。

<comment>Param:</comment>
  <info>string</info>  <strong>$path</strong>    一个路径。
                   
                   在 Windows 中，斜线（<return>/</return>）和反斜线（<return>\</return>）都可以用作目录分隔符。在其它环境下是斜线
                   （<return>/</return>）。
  <info>string</info>  <strong>$suffix</strong>  如果文件名是以 <strong>$suffix</strong> 结束的，那这一部分也会被去掉。

<comment>Return:</comment>
  <info>string</info>  返回指定 <strong>$path</strong> 的基本名称。

<comment>See Also:</comment>
   * <strong>dirname()</strong>
   * <strong>pathinfo()</strong>


id: bcadd
type: function
doc:
<comment>Description:</comment>
  两个任意精度数字的加法计算
  
  对 <strong>$num1</strong> 和 <strong>$num2</strong> 求和。

<comment>Param:</comment>
  <info>string</info>    <strong>$num1</strong>   左操作数，字符串类型。
  <info>string</info>    <strong>$num2</strong>   右操作数，字符串类型。
  <info>int|null</info>  <strong>$scale</strong>  此可选参数用于设置结果中小数点后的小数位数。也可通过使用
                    <strong>bcscale()</strong> 来设置全局默认的小数位数，用于所有函数。如果未设置，则默认为 <return>0</return>。

<comment>Return:</comment>
  <info>string</info>  以字符串返回两个操作数求和之后的结果。

<comment>See Also:</comment>
   * <strong>bcsub()</strong>


id: bccomp
type: function
doc:
<comment>Description:</comment>
  比较两个任意精度的数字
  
  比较 <strong>$num1</strong> 和 <strong>$num2</strong>, 并且返回整型数字的结果。

<comment>Param:</comment>
  <info>string</info>    <strong>$num1</strong>   左边的运算数，是一个字符串。
  <info>string</info>    <strong>$num2</strong>   右边的运算数，是一个字符串。
  <info>int|null</info>  <strong>$scale</strong>  可选的 <strong>$scale</strong> 参数被用作设置指示数字， 在使用来作比较的小数点部分。

<comment>Return:</comment>
  <info>int</info>  两个数相等时返回 0； <strong>$num1</strong> 比 <strong>$num2</strong> 大时返回 1； 其他则返回 -1。


id: bcdiv
type: function
doc:
<comment>Description:</comment>
  两个任意精度的数字除法计算
  
  <strong>$num1</strong> 除以 <strong>$num2</strong>。

<comment>Param:</comment>
  <info>string</info>    <strong>$num1</strong>   被除数，字符串类型。
  <info>string</info>    <strong>$num2</strong>   除数，字符串类型。
  <info>int|null</info>  <strong>$scale</strong>  此可选参数用于设置结果中小数点后的小数位数。也可通过使用
                    <strong>bcscale()</strong> 来设置全局默认的小数位数，用于所有函数。如果未设置，则默认为 <return>0</return>。

<comment>Return:</comment>
  <info>string</info>  返回字符串类型的结果。如果 <strong>$num2</strong> 是 <return>0</return> 结果为 <info>null</info>。

<comment>See Also:</comment>
   * <strong>bcmul()</strong>


id: bcmod
type: function
doc:
<comment>Description:</comment>
  任意精度数字取模
  
  对 <strong>$num1</strong> 使用 <strong>$num2</strong> 取模。 除非 <strong>$num2</strong> 是零，否则结果必定和 <strong>$num1</strong> 有相同的符号。

<comment>Param:</comment>
  <info>string</info>  <strong>$num1</strong>  string 类型的被除数。
  <info>string</info>  <strong>$num2</strong>  string 类型的除数。

<comment>Return:</comment>
  <info>string</info>  返回字符串类型取模后的结果，如果 <strong>$num2</strong> 为 0 则返回  <info>null</info>。

<comment>See Also:</comment>
   * <strong>bcdiv()</strong>


id: bcmul
type: function
doc:
<comment>Description:</comment>
  两个任意精度数字乘法计算
  
  <strong>$num1</strong> 乘以 <strong>$num2</strong>。

<comment>Param:</comment>
  <info>string</info>    <strong>$num1</strong>   字符串类型的左操作数。
  <info>string</info>    <strong>$num2</strong>   字符串类型的右操作数。
  <info>int|null</info>  <strong>$scale</strong>  此可选参数用于设置结果中小数点后的小数位数。也可通过使用
                    <strong>bcscale()</strong> 来设置全局默认的小数位数，用于所有函数。如果未设置，则默认为 <return>0</return>。

<comment>Return:</comment>
  <info>string</info>  返回字符串类型的结果。

<comment>See Also:</comment>
   * <strong>bcdiv()</strong>


id: bcpow
type: function
doc:
<comment>Description:</comment>
  任意精度数字的乘方
  
  <strong>$num</strong> 的 <strong>$exponent</strong> 次方运算。

<comment>Param:</comment>
  <info>string</info>    <strong>$num</strong>       string 类型的底数。
  <info>string</info>    <strong>$exponent</strong>  string 类型的指数。 如果指数不是整数，将被截断。 指数的有效范围取决于平台，但
                       起码支持 <return>-2147483648</return> 到 <return>2147483647</return> 的范围。
  <info>int|null</info>  <strong>$scale</strong>     此可选参数用于设置结果中小数点后的小数位数。也可通过使用
                       <strong>bcscale()</strong> 来设置全局默认的小数位数，用于所有函数。如果未设置，则默认为 <return>0</return>。

<comment>Return:</comment>
  <info>string</info>  返回字符串类型的结果。

<comment>See Also:</comment>
   * <strong>bcpowmod()</strong>
   * <strong>bcsqrt()</strong>


id: bcpowmod
type: function
doc:
<comment>Description:</comment>
  Raise an arbitrary precision number to another, reduced by a specified modulus
  
  Use the fast-exponentiation method to raise  <strong>$num</strong> to the power <strong>$exponent</strong> with respect to the
  modulus <strong>$modulus</strong>.

<comment>Param:</comment>
  <info>string</info>    <strong>$num</strong>       The base, as an integral string (i.e. the scale has to be zero).
  <info>string</info>    <strong>$exponent</strong>  The exponent, as an non-negative, integral string (i.e. the scale has to be
                       zero).
  <info>string</info>    <strong>$modulus</strong>   The modulus, as an integral string (i.e. the scale has to be zero).
  <info>int|null</info>  <strong>$scale</strong>     此可选参数用于设置结果中小数点后的小数位数。也可通过使用
                       <strong>bcscale()</strong> 来设置全局默认的小数位数，用于所有函数。如果未设置，则默认为 <return>0</return>。

<comment>Return:</comment>
  <info>string</info>  Returns the result as a string, or <info>false</info> if <strong>$modulus</strong> is <return>0</return> or <strong>$exponent</strong> is negative.

<comment>See Also:</comment>
   * <strong>bcpow()</strong>
   * <strong>bcmod()</strong>


id: bcscale
type: function
doc:
<comment>Description:</comment>
  设置/获取所有 bc math 函数的默认小数点保留位数
  
  设置所有 bc math 函数在未设定情况下的小数点保留位数。
  
  获取当前的小数点保留位数。

<comment>Param:</comment>
  <info>int</info>  <strong>$scale</strong>  小数点保留位数。

<comment>Return:</comment>
  <info>int</info>  设置的时候，返回之前的小数点保留位数。否则就是返回当前的位数。


id: bcsqrt
type: function
doc:
<comment>Description:</comment>
  任意精度数字的二次方根
  
  返回 <strong>$num</strong> 的二次方根。

<comment>Param:</comment>
  <info>string</info>    <strong>$num</strong>    操作数，格式良好的 BCMath 数字字符串。
  <info>int|null</info>  <strong>$scale</strong>  此可选参数用于设置结果中小数点后的小数位数。也可通过使用
                    <strong>bcscale()</strong> 来设置全局默认的小数位数，用于所有函数。如果未设置，则默认为 <return>0</return>。

<comment>Return:</comment>
  <info>string</info>  返回平方根，作为格式良好的 BCMath 数字字符串。

<comment>See Also:</comment>
   * <strong>bcpow()</strong>


id: bcsub
type: function
doc:
<comment>Description:</comment>
  两个任意精度数字的减法
  
  <strong>$num1</strong> 减去 <strong>$num2</strong>。

<comment>Param:</comment>
  <info>string</info>    <strong>$num1</strong>   字符串类型的左操作数。
  <info>string</info>    <strong>$num2</strong>   字符串类型的右操作数。
  <info>int|null</info>  <strong>$scale</strong>  此可选参数用于设置结果中小数点后的小数位数。也可通过使用
                    <strong>bcscale()</strong> 来设置全局默认的小数位数，用于所有函数。如果未设置，则默认为 <return>0</return>。

<comment>Return:</comment>
  <info>string</info>  以 string 类型返回减法之后的结果。

<comment>See Also:</comment>
   * <strong>bcadd()</strong>


id: bin2hex
type: function
doc:
<comment>Description:</comment>
  将二进制数据转换为十六进制表示
  
  返回 ASCII 字符串，包含 <strong>$string</strong> 的十六进制表示。转换是高位优先，按字节完成的。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  字符串。

<comment>Return:</comment>
  <info>string</info>  返回指定字符串的十六进制表示。

<comment>See Also:</comment>
   * <strong>hex2bin()</strong>
   * <strong>pack()</strong>


id: bind_textdomain_codeset
type: function
doc:
<comment>Description:</comment>
  Specify or get the character encoding in which the messages from the DOMAIN message catalog will
  be
  returned
  
  <strong>bind_textdomain_codeset()</strong> allows to set or get the encoding in which messages from <strong>$domain</strong> will be
  returned by <strong>gettext()</strong> and similar functions.

<comment>Param:</comment>
  <info>string</info>       <strong>$domain</strong>   The domain.
  <info>string|null</info>  <strong>$codeset</strong>  The code set. If <info>null</info>, the currently set encoding is returned.

<comment>Return:</comment>
  <info>string|false</info>  A <info>string</info> on success.


id: bindec
type: function
doc:
<comment>Description:</comment>
  二进制转换为十进制
  
  返回 <strong>$binary_string</strong> 参数所表示的二进制数的十进制等价值。
  
  <strong>bindec()</strong> 将一个二进制数转换成 <info>int</info>，或者出于大小的需要，转换为 <info>float</info> 类型。
  
  <strong>bindec()</strong> 将所有的 <strong>$binary_string</strong> 值解释为无符号整数。这是由于 <strong>bindec()</strong> 函数将其最高有效位视为数量
  级而非符号位。

<comment>Param:</comment>
  <info>string</info>  <strong>$binary_string</strong>  要转换的二进制字符串。<strong>$binary_string</strong> 中的任何无效字符都会默认忽略。自 PHP
                          7.4.0 起，弃用使用任何无效字符。

<comment>Return:</comment>
  <info>int|float</info>  <strong>$binary_string</strong> 的十进制数值

<comment>See Also:</comment>
   * <strong>decbin()</strong>
   * <strong>octdec()</strong>
   * <strong>hexdec()</strong>
   * <strong>base_convert()</strong>


id: bindtextdomain
type: function
doc:
<comment>Description:</comment>
  Sets or gets the path for a domain
  
  The <strong>bindtextdomain()</strong> function sets or gets the path for a domain.

<comment>Param:</comment>
  <info>string</info>       <strong>$domain</strong>     The domain.
  <info>string|null</info>  <strong>$directory</strong>  The directory path. An empty string means the current directory. If <info>null</info>,
                           the currently set directory is returned.

<comment>Return:</comment>
  <info>string|false</info>  The full pathname for the <strong>$domain</strong> currently being set, 或者在失败时返回 <info>false</info>.


id: boolval
type: function
doc:
<comment>Description:</comment>
  获取变量的布尔值
  
  返回 <strong>$value</strong> 的 <info>bool</info> 值。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$value</strong>  标量值会被转化成 <info>bool</info> 值。

<comment>Return:</comment>
  <info>bool</info>  <strong>$value</strong> 的 <info>bool</info> 值。

<comment>See Also:</comment>
   * <strong>floatval()</strong>
   * <strong>intval()</strong>
   * <strong>strval()</strong>
   * <strong>settype()</strong>
   * <strong>is_bool()</strong>
   * 类型转换的判别


id: bzclose
type: function
doc:
<comment>Description:</comment>
  关闭一个 bzip2 文件
  
  关闭给出的 bzip2 文件指针。

<comment>Param:</comment>
  <info>resource</info>  <strong>$bz</strong>  文件指针。它必须是有效的并且指向 <strong>bzopen()</strong> 成功打开的文件。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>bzopen()</strong>


id: bzcompress
type: function
doc:
<comment>Description:</comment>
  把一个字符串压缩成 bzip2 编码数据
  
  <strong>bzcompress()</strong> 压缩了指定的字符串并以 bzip2 编码返回数据。

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>         待压缩的字符串。
  <info>int</info>     <strong>$block_size</strong>   指定压缩时使用的块大小，应该是一个 1-9 的数字。9 可以有最高的压缩比，但会使
                        用更多的资源。
  <info>int</info>     <strong>$work_factor</strong>  控制压缩阶段出现最坏的重复性高的情况下输入数据时的行为。 该值可以是在 0 至
                        250 之间，0是一个特殊的情况。
                        
                        无论 <strong>$work_factor</strong>是什么，产生的输出都是一致的。

<comment>Return:</comment>
  <info>string|int</info>  压缩后的字符串，或者在出现错误时返回错误号。

<comment>See Also:</comment>
   * <strong>bzdecompress()</strong>


id: bzdecompress
type: function
doc:
<comment>Description:</comment>
  解压经 bzip2 编码过的数据
  
  <strong>bzdecompress()</strong> 解压了包含 bzip2 压缩数据的指定字符串。

<comment>Param:</comment>
  <info>string</info>  <strong>$data</strong>             要解压的字符串。
  <info>bool</info>    <strong>$use_less_memory</strong>  如果为 <info>true</info>，将会使用一种内存开销更小的替代算法（最大内存需求降低至大约
                            2300K）但速度会降低约一半。
                            
                            寻找该功能的更多信息可参见 bzip2 文档。

<comment>Return:</comment>
  <info>string|int|false</info>  返回解压后的字符串或者 <info>false</info>，如果发生了一个错误则返回一个错误码。

<comment>See Also:</comment>
   * <strong>bzcompress()</strong>


id: bzerrno
type: function
doc:
<comment>Description:</comment>
  返回一个 bzip2 错误码
  
  返回指定文件指针任意返回的 bzip2 错误的错误码。

<comment>Param:</comment>
  <info>resource</info>  <strong>$bz</strong>  文件指针。它必须是有效的并且指向 <strong>bzopen()</strong> 成功打开的文件。

<comment>Return:</comment>
  <info>int</info>  返回 integer 的错误码。

<comment>See Also:</comment>
   * <strong>bzerror()</strong>
   * <strong>bzerrstr()</strong>


id: bzerror
type: function
doc:
<comment>Description:</comment>
  返回包含 bzip2 错误号和错误字符串的一个 array
    
  
  返回文件指针中返回的 bzip2 错误的错误号和错误字符串。

<comment>Param:</comment>
  <info>resource</info>  <strong>$bz</strong>  文件指针。它必须是有效的并且指向 <strong>bzopen()</strong> 成功打开的文件。

<comment>Return:</comment>
  <info>array</info>  返回一个关联数组，包含错误码于 <return>errno</return> 条目， 以及错误信息于 <return>errstr</return> 条目。

<comment>See Also:</comment>
   * <strong>bzerrno()</strong>
   * <strong>bzerrstr()</strong>


id: bzerrstr
type: function
doc:
<comment>Description:</comment>
  返回一个 bzip2 的错误字符串
  
  获取指定文件指针中返回 bzip2 任何错误的错误字符串。

<comment>Param:</comment>
  <info>resource</info>  <strong>$bz</strong>  文件指针。它必须是有效的并且指向 <strong>bzopen()</strong> 成功打开的文件。

<comment>Return:</comment>
  <info>string</info>  返回包含错误信息的 string。

<comment>See Also:</comment>
   * <strong>bzerrno()</strong>
   * <strong>bzerror()</strong>


id: bzflush
type: function
doc:
<comment>Description:</comment>
  什么都不做
  
  该函数应该强制写入 bzip2 文件指针 <strong>$bz</strong>  的所有写缓冲数据。但在 libbz2 中实现为空函数，因此什么都不
  做。

<comment>Param:</comment>
  <info>resource</info>  <strong>$bz</strong>  文件指针。它必须是有效的并且指向 <strong>bzopen()</strong> 成功打开的文件。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>bzread()</strong>
   * <strong>bzwrite()</strong>


id: bzopen
type: function
doc:
<comment>Description:</comment>
  打开 bzip2 压缩文件
  
  <strong>bzopen()</strong> 打开一个 bzip2（.bz2）文件用于读或写。

<comment>Param:</comment>
  <info>string|resource</info>  <strong>$file</strong>  待打开的文件的文件名，或者已经存在的资源流。
  <info>string</info>           <strong>$mode</strong>  支持 <return>'r'</return>（读）和 <return>'w'</return>（写）模式。 其他任何模式都会导致 <strong>bzopen()</strong> 返回
                          <info>false</info>。

<comment>Return:</comment>
  <info>resource|false</info>  如果打开失败，<strong>bzopen()</strong> 会返回 <info>false</info>，否则返回一个指向最新打开文件的指针。

<comment>See Also:</comment>
   * <strong>bzclose()</strong>


id: bzread
type: function
doc:
<comment>Description:</comment>
  bzip2 文件二进制安全地读取
  
  <strong>bzread()</strong> 从指定的 bzip2 文件指针中读取数据。
  
  读取到 <strong>$length</strong>（未经压缩的长度）个字节，或者到文件尾，取决于先到哪个。

<comment>Param:</comment>
  <info>resource</info>  <strong>$bz</strong>      文件指针。它必须是有效的并且指向 <strong>bzopen()</strong> 成功打开的文件。
  <info>int</info>       <strong>$length</strong>  如果没有提供， <strong>bzread()</strong> 一次会读入 1024 个字节（未经压缩的长度）。 一次最大可读
                     入 8192 个未压缩的字节。

<comment>Return:</comment>
  <info>string|false</info>  返回解压的数据，在错误时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>bzwrite()</strong>
   * <strong>feof()</strong>
   * <strong>bzopen()</strong>


id: bzwrite
type: function
doc:
<comment>Description:</comment>
  二进制安全地写入 bzip2 文件
  
  <strong>bzwrite()</strong> 把字符串（string）写入了指定的 bzip2 文件流。

<comment>Param:</comment>
  <info>resource</info>  <strong>$bz</strong>      文件指针。它必须是有效的并且指向 <strong>bzopen()</strong> 成功打开的文件。
  <info>string</info>    <strong>$data</strong>    要写入的数据。
  <info>int|null</info>  <strong>$length</strong>  如果提供了这个参数，将仅仅写入 <strong>$length</strong>（未压缩）个字节，若 <strong>$data</strong> 小于该指定的长
                     度则写入全部数据。

<comment>Return:</comment>
  <info>int|false</info>  返回写入的数据字节数，错误时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>bzread()</strong>
   * <strong>bzopen()</strong>


id: cal_days_in_month
type: function
doc:
<comment>Description:</comment>
  返回指定历法中某年某月的天数
  
  此函数返回指定 <strong>$calendar</strong> 中的某 <strong>$year</strong>  中的某 <strong>$month</strong> 的天数。

<comment>Param:</comment>
  <info>int</info>  <strong>$calendar</strong>  用来计算的历法
  <info>int</info>  <strong>$month</strong>     指定历法中的某月
  <info>int</info>  <strong>$year</strong>      指定历法中的某年

<comment>Return:</comment>
  <info>int</info>  指定历法中所选月份的天数


id: cal_from_jd
type: function
doc:
<comment>Description:</comment>
  从儒略日数转换为支持的历法
  
  <strong>cal_from_jd()</strong> 根据 <strong>$julian_day</strong> 指定的儒略日  转换为指定 <strong>$calendar</strong> 中的日期。<strong>$calendar</strong> 支持的值有
  <info>CAL_GREGORIAN</info>、<info>CAL_JULIAN</info>、<info>CAL_JEWISH</info> 和 <info>CAL_FRENCH</info>。

<comment>Param:</comment>
  <info>int</info>  <strong>$julian_day</strong>  int 类型的儒略日
  <info>int</info>  <strong>$calendar</strong>    要转换为的历法

<comment>Return:</comment>
  <info>array</info>  返回包含的历法信息的数组，例如月、日、年、星期几（<return>dow</return> ）、星期和月份的缩写和全称、日期的
         string 形式是“月/日/年”。 星期几的范围是从 <return>0</return> （星期天）到 <return>6</return>（星期六）。

<comment>See Also:</comment>
   * <strong>cal_to_jd()</strong>
   * <strong>jdtofrench()</strong>
   * <strong>jdtogregorian()</strong>
   * <strong>jdtojewish()</strong>
   * <strong>jdtojulian()</strong>
   * <strong>jdtounix()</strong>


id: cal_info
type: function
doc:
<comment>Description:</comment>
  返回选定历法的信息
  
  <strong>cal_info()</strong> 返回选定 <strong>$calendar</strong> 的信息。
  
  以数组的形式返回历法信息，包含的元素有 <return>calname</return>（历法名称）、<return>calsymbol</return>（历法代码）、<return>month</return> （月
  份）、<return>abbrevmonth</return>（月份的缩写）和 <return>maxdaysinmonth</return>（单月的最多天数）。<strong>$calendar</strong> 参数可以使用下列值指
  定不同历法的名称：  0 或者 <info>CAL_GREGORIAN</info> - 公历  1 或者 <info>CAL_JULIAN</info> - 儒略历  2 或者 <info>CAL_JEWISH</info> -
  犹太历  3 或者 <info>CAL_FRENCH</info> - 法国共和历
  
  0 或者 <info>CAL_GREGORIAN</info> - 公历
  
  1 或者 <info>CAL_JULIAN</info> - 儒略历
  
  2 或者 <info>CAL_JEWISH</info> - 犹太历
  
  3 或者 <info>CAL_FRENCH</info> - 法国共和历
  
  如果没有指定参数 <strong>$calendar</strong>，所支持的所有历法将以数组形式返回。

<comment>Param:</comment>
  <info>int</info>  <strong>$calendar</strong>  返回指定历法的信息，如果没有指定，将返回所有历法信息。

<comment>Return:</comment>
  <info>array</info>  


id: cal_to_jd
type: function
doc:
<comment>Description:</comment>
  从支持的历法转换为儒略日数
  
  <strong>cal_to_jd()</strong> 计算指定 <strong>$calendar</strong> 中某个日期的儒略日数。支持的历法有 <info>CAL_GREGORIAN</info>、<info>CAL_JULIAN</info>、
  <info>CAL_JEWISH</info>  和 <info>CAL_FRENCH</info>。

<comment>Param:</comment>
  <info>int</info>  <strong>$calendar</strong>  要转换的历法，可以是 <info>CAL_GREGORIAN</info>、<info>CAL_JULIAN</info>、<info>CAL_JEWISH</info>、<info>CAL_FRENCH</info> 中的一个。
  <info>int</info>  <strong>$month</strong>     数字类型的月份，根据 <strong>$calendar</strong> 来确定有效范围。
  <info>int</info>  <strong>$day</strong>       数字类型的日期，根据选定的 <strong>$calendar</strong> 来确定有效范围。
  <info>int</info>  <strong>$year</strong>      数字类型的年份，根据选定的 <strong>$calendar</strong> 来确定有效范围。

<comment>Return:</comment>
  <info>int</info>  儒略日数。

<comment>See Also:</comment>
   * <strong>cal_from_jd()</strong>
   * <strong>frenchtojd()</strong>
   * <strong>gregoriantojd()</strong>
   * <strong>jewishtojd()</strong>
   * <strong>juliantojd()</strong>
   * <strong>unixtojd()</strong>


id: call_user_func
type: function
doc:
<comment>Description:</comment>
  把第一个参数作为回调函数调用
  
  第一个参数 <strong>$callback</strong> 是被调用的回调函数，其余参数是回调函数的参数。

<comment>Param:</comment>
  <info>callable</info>  <strong>$callback</strong>  将被调用的回调函数（<info>callable</info>）。
  <info>mixed</info>     <strong>$args</strong>      0个或以上的参数，被传入回调函数。
                       
                       请注意，传入<strong>call_user_func()</strong>的参数不能为引用传递。 <strong>call_user_func()</strong> 的参考例
                       子
                       ]]>以上示例会输出：
                       
                       以上示例会输出：

<comment>Return:</comment>
  <info>mixed</info>  返回回调函数的返回值。

<comment>See Also:</comment>
   * <strong>call_user_func_array()</strong>
   * <strong>is_callable()</strong>
   * Variable functions
   * ReflectionFunction::invoke
   * ReflectionMethod::invoke


id: call_user_func_array
type: function
doc:
<comment>Description:</comment>
  调用回调函数，并把一个数组参数作为回调函数的参数
  
  把第一个参数作为回调函数（<strong>$callback</strong>）调用，把参数数组作（<strong>$args</strong>）为回调函数的的参数传入。

<comment>Param:</comment>
  <info>callable</info>  <strong>$callback</strong>  被调用的回调函数。
  <info>array</info>     <strong>$args</strong>      要被传入回调函数的数组。
                       
                       如果 <strong>$args</strong> 的 key 都是数字，则会忽略 key，并按顺序将每个元素作为位置参数传递
                       给 <strong>$callback</strong> 。
                       
                       如果 <strong>$args</strong> 的任一 key 是字符串，则这些元素将作为命名参数传递给 <strong>$callback</strong>，名
                       称由 key 指定。
                       
                       在 <strong>$args</strong> 中，如果数字 key 在 字符串 key 之后出现，或者字符串 key 与 <strong>$callback</strong>
                       的任何参数名称不匹配，将会导致 fatal error。

<comment>Return:</comment>
  <info>mixed</info>  返回回调函数的结果。如果出错的话就返回 <info>false</info> 。

<comment>See Also:</comment>
   * <strong>call_user_func()</strong>
   * ReflectionFunction::invokeArgs
   * ReflectionMethod::invokeArgs


id: ceil
type: function
doc:
<comment>Description:</comment>
  进一法取整
  
  如果有必要，通过对 <strong>$num</strong> 向上取整返回下一个最高的整数。

<comment>Param:</comment>
  <info>int|float</info>  <strong>$num</strong>  要进一法取整的值

<comment>Return:</comment>
  <info>float</info>  返回不小于 <strong>$num</strong> 的下一个整数。<strong>ceil()</strong> 返回的类型仍然是 <info>float</info>，因为 <info>float</info> 值的范围通常比 <info>int</info>
         要大。

<comment>See Also:</comment>
   * <strong>floor()</strong>
   * <strong>round()</strong>


id: chdir
type: function
doc:
<comment>Description:</comment>
  改变目录
  
  将 PHP 的当前目录改为 <strong>$directory</strong>。

<comment>Param:</comment>
  <info>string</info>  <strong>$directory</strong>  新的当前目录

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>getcwd()</strong>


id: checkdate
type: function
doc:
<comment>Description:</comment>
  验证一个格里高里日期
  
  检查由参数构成的日期的合法性。如果每个参数都正确定义了则会被认为是有效的。

<comment>Param:</comment>
  <info>int</info>  <strong>$month</strong>  month 的值是从 1 到 12。
  <info>int</info>  <strong>$day</strong>    <strong>$Day</strong> 的值在给定的 <strong>$month</strong> 所应该具有的天数范围之内，闰年已经考虑进去了。
  <info>int</info>  <strong>$year</strong>   year 的值是从 1 到 32767。

<comment>Return:</comment>
  <info>bool</info>  如果给出的日期有效则返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>mktime()</strong>
   * <strong>strtotime()</strong>


id: checkdnsrr
type: function
doc:
<comment>Description:</comment>
  给指定的主机（域名）或者IP地址做DNS通信检查
  
  在 DNS 中搜索与 <strong>$hostname</strong> 对应的 <strong>$type</strong> 类型纪录。

<comment>Param:</comment>
  <info>string</info>  <strong>$hostname</strong>  <strong>$hostname</strong> 可以是点分十进制的 IP 地址，也可以是主机名。
  <info>string</info>  <strong>$type</strong>      <strong>$type</strong> 可能是下面这些类型中的任何一个：A、MX、NS、SOA、PTR、CNAME、AAAA、A6、
                     SRV、NAPTR、TXT 或 ANY。

<comment>Return:</comment>
  <info>bool</info>  如果记录能找到，就返回 <info>true</info>；如果查找不到该 DNS 记录或者发生了错误，就返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>dns_get_record()</strong>
   * <strong>getmxrr()</strong>
   * <strong>gethostbyaddr()</strong>
   * <strong>gethostbyname()</strong>
   * <strong>gethostbynamel()</strong>
   * the named(8) manual page


id: chgrp
type: function
doc:
<comment>Description:</comment>
  改变文件所属的组
  
  尝试将文件 <strong>$filename</strong> 所属的组改成 <strong>$group</strong>（通过组名或组 ID 指定）。
  
  只有超级用户可以任意修改文件的组，其它用户可能只能将文件的组改成该用户自己所在的组。

<comment>Param:</comment>
  <info>string</info>      <strong>$filename</strong>  文件的路径。
  <info>string|int</info>  <strong>$group</strong>     组的名称或数字。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>chown()</strong>
   * <strong>chmod()</strong>


id: chmod
type: function
doc:
<comment>Description:</comment>
  改变文件模式
  
  尝试将 <strong>$filename</strong> 所指定文件的模式改成 <strong>$permissions</strong> 所给定的。

<comment>Param:</comment>
  <info>string</info>  <strong>$filename</strong>     文件的路径。
  <info>int</info>     <strong>$permissions</strong>  注意 <strong>$permissions</strong> 不会被自动当成八进制数值，因此为确保正确操作，需要给
                        <strong>$permissions</strong> 前面加上 0。诸如“g+w”之类的字符串将无法正常工作。
                        
                        
                        ]]>
                        
                        <strong>$permissions</strong> 参数包含三个八进制数按顺序分别指定了所有者、所有者所在的组以及
                        所有人的访问限制。每一部分都可以通过加入所需的权限来计算出所要的权限。数字 1
                        表示使文件可执行，数字 2 表示使文件可写，数字 4 表示使文件可读。加入这些数字
                        来制定所需要的权限。有关 UNIX 系统的文件权限可以阅读手册“man 1 chmod”和“man
                        2 chmod”。
                        
                        
                        ]]>

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>chown()</strong>
   * <strong>chgrp()</strong>
   * <strong>fileperms()</strong>
   * <strong>stat()</strong>


id: chown
type: function
doc:
<comment>Description:</comment>
  改变文件的所有者
  
  尝试将文件 <strong>$filename</strong> 的所有者改成用户 <strong>$user</strong>（由用户名或用户 ID 指定）。 只有超级用户可以改变文件的
  所有者。

<comment>Param:</comment>
  <info>string</info>      <strong>$filename</strong>  文件路径。
  <info>string|int</info>  <strong>$user</strong>      用户名或数字。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>chmod()</strong>
   * <strong>chgrp()</strong>


id: chr
type: function
doc:
<comment>Description:</comment>
  从数字生成单字节字符串
  
  返回单字符字符串，包含将 <strong>$codepoint</strong> 作为无符号整数解释的指定字符。
  
  这可用于在一种单字节编码（像是 ASCII、ISO-8859 或 Windows 1252）中通过传递想要的字符在编码映射表中
  的位置来创建单字符字符串。但是，注意此函数并不清楚任何字符串编码，特别是无法通过传递一个  Unicode
  码位值来生成多字节编码（像是 UTF-8 或 UTF-16）字符串。
  
  此函数与 <strong>ord()</strong> 互补。

<comment>Param:</comment>
  <info>int</info>  <strong>$codepoint</strong>  一个介于 0 与 255 之间的整数。
                   
                   超过有效范围（0..255）的值将和 255“按位与”，与以下算法等效： 

<comment>Return:</comment>
  <info>string</info>  包含指定字节的单字符字符串。

<comment>See Also:</comment>
   * <strong>sprintf()</strong> 如何使用格式字符串 <return>%c</return>
   * <strong>ord()</strong>
   * 一个 ASCII 表
   * <strong>mb_chr()</strong>
   * <strong>IntlChar::chr()</strong>


id: chroot
type: function
doc:
<comment>Description:</comment>
  改变根目录
  
  将当前进程的根目录改变为 <strong>$directory</strong>。
  
  本函数仅在系统支持且运行于 CLI，CGI 或嵌入 SAPI 版本时才能正确工作。此外本函数还需要 root 权限。
  
  调用此函数不会改变 <return>__DIR__</return> 和 <return>__FILE__</return> 魔术常量的值。

<comment>Param:</comment>
  <info>string</info>  <strong>$directory</strong>  新目录

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: chunk_split
type: function
doc:
<comment>Description:</comment>
  将字符串分割成小块
  
  使用此函数将字符串分割成小块非常有用。例如将 <strong>base64_encode()</strong> 的输出转换成符合 RFC 2045 语义的字符
  串。它会在每 <strong>$length</strong> 个字符后边插入 <strong>$separator</strong>。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>     要分割的字符。
  <info>int</info>     <strong>$length</strong>     分割的尺寸。
  <info>string</info>  <strong>$separator</strong>  行尾序列符号。

<comment>Return:</comment>
  <info>string</info>  返回分割后的字符。

<comment>See Also:</comment>
   * <strong>str_split()</strong>
   * <strong>explode()</strong>
   * <strong>wordwrap()</strong>
   * RFC 2045


id: class_alias
type: function
doc:
<comment>Description:</comment>
  为类创建别名
  
  基于用户定义的类 <strong>$class</strong> 创建别名 <strong>$alias</strong>。 这个别名类和原有的类完全相同。

<comment>Param:</comment>
  <info>string</info>  <strong>$class</strong>     原有的类。
  <info>string</info>  <strong>$alias</strong>     类的别名。
  <info>bool</info>    <strong>$autoload</strong>  如果原始类没有加载，是否使用自动加载。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>get_parent_class()</strong>
   * <strong>is_subclass_of()</strong>


id: class_exists
type: function
doc:
<comment>Description:</comment>
  查类是否已经定义
  
  该函数检查指定的类是否已经定义。

<comment>Param:</comment>
  <info>string</info>  <strong>$class</strong>     类名。名称以不区分大小写的方式匹配。
  <info>bool</info>    <strong>$autoload</strong>  如果尚未加载，是否自动加载。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$class</strong> 是已经定义的类，则返回 <info>true</info>，否则返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>function_exists()</strong>
   * <strong>enum_exists()</strong>
   * <strong>interface_exists()</strong>
   * <strong>get_declared_classes()</strong>


id: class_implements
type: function
doc:
<comment>Description:</comment>
  返回指定的类或接口实现的所有接口
    
  
  本函数返回数组，包含指定 <strong>$object_or_class</strong> 及其父类所实现的所有接口的名称。

<comment>Param:</comment>
  <info>object|string</info>  <strong>$object_or_class</strong>  对象（类实例）或字符串（类名或接口名）。
  <info>bool</info>           <strong>$autoload</strong>         如果尚未加载，是否自动加载。

<comment>Return:</comment>
  <info>array|false</info>  成功时为数组，当指定类不存在则为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>class_parents()</strong>
   * <strong>get_declared_interfaces()</strong>
   * <strong>is_a()</strong>
   * <return>instanceof</return>


id: class_parents
type: function
doc:
<comment>Description:</comment>
  返回指定类的父类
    
  
  本函数返回包含了指定 <strong>$object_or_class</strong> 父类名的数组。

<comment>Param:</comment>
  <info>object|string</info>  <strong>$object_or_class</strong>  对象（类实例）或字符串（类名称）。
  <info>bool</info>           <strong>$autoload</strong>         如果尚未加载，是否自动加载。

<comment>Return:</comment>
  <info>array|false</info>  成功时为数组，当指定类不存在则为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>class_implements()</strong>
   * <strong>is_a()</strong>
   * <return>instanceof</return>


id: class_uses
type: function
doc:
<comment>Description:</comment>
  Return the traits used by the given class
    
  
  This function returns an array with the names of the traits that the given <strong>$object_or_class</strong> uses.
  This does however not include any traits used by a parent class.

<comment>Param:</comment>
  <info>object|string</info>  <strong>$object_or_class</strong>  An object (class instance) or a string (class name).
  <info>bool</info>           <strong>$autoload</strong>         Whether to autoload if not already loaded.

<comment>Return:</comment>
  <info>array|false</info>  An array on success, or <info>false</info> when the given class doesn't exist.

<comment>See Also:</comment>
   * <strong>class_parents()</strong>
   * <strong>get_declared_traits()</strong>


id: clearstatcache
type: function
doc:
<comment>Description:</comment>
  清除文件状态缓存
  
  当使用 <strong>stat()</strong>，<strong>lstat()</strong> 或者任何列在受影响函数表（见下面）中的函数时，PHP 将缓存这些函数的返回信息
  以提供更快的性能。然而在某些情况下，你可能想清除被缓存的信息。例如如果在一个脚本中多次检查同一个文
  件，而该文件在此脚本执行期间有被删除或修改的危险时，你需要清除文件状态缓存。这种情况下，可以用
  <strong>clearstatcache()</strong> 函数来清除被 PHP 缓存的该文件信息。
  
  必须注意的是，对于不存在的文件，PHP 并不会缓存其信息。所以如果调用 <strong>file_exists()</strong> 来检查不存在的文
  件，在该文件没有被创建之前，它都会返回 <info>false</info>。如果该文件被创建了，就算以后被删除，它都会返回 <info>true</info>
  函数 <strong>unlink()</strong> 会自动清除该缓存.
  
  本函数缓存特定文件名的信息，因此只在对同一个文件名进行多次操作并且需要该文件信息不被缓存时才需要调
  用 <strong>clearstatcache()</strong>。
  
  受影响的函数包括 <strong>stat()</strong>， <strong>lstat()</strong>， <strong>file_exists()</strong>， <strong>is_writable()</strong>， <strong>is_readable()</strong>，
  <strong>is_executable()</strong>， <strong>is_file()</strong>， <strong>is_dir()</strong>， <strong>is_link()</strong>， <strong>filectime()</strong>， <strong>fileatime()</strong>， <strong>filemtime()</strong>，
  <strong>fileinode()</strong>， <strong>filegroup()</strong>， <strong>fileowner()</strong>， <strong>filesize()</strong>， <strong>filetype()</strong> 和 <strong>fileperms()</strong>。

<comment>Param:</comment>
  <info>bool</info>    <strong>$clear_realpath_cache</strong>  是否也清除真实路径缓存
  <info>string</info>  <strong>$filename</strong>              仅清除指定文件名的真实路径缓存; 只在 <strong>$clear_realpath_cache</strong> 为 <info>true</info>
                                 时启用。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: cli_get_process_title
type: function
doc:
<comment>Description:</comment>
  Returns the current process title
  
  Returns the current process title, as set by <strong>cli_set_process_title()</strong>. Note that this may not
  exactly match what is shown in ps or top, depending on your operating system.
  
  This function is available only in CLI mode.

<comment>Return:</comment>
  <info>string|null</info>  Return a string with the current process title or <info>null</info> on error.

<comment>See Also:</comment>
   * <strong>cli_set_process_title()</strong>


id: cli_set_process_title
type: function
doc:
<comment>Description:</comment>
  Sets the process title
  
  Sets the process title visible in tools such as top and ps. This function is available only in CLI
  mode.

<comment>Param:</comment>
  <info>string</info>  <strong>$title</strong>  The new title.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cli_get_process_title()</strong>


id: closedir
type: function
doc:
<comment>Description:</comment>
  关闭目录句柄
  
  关闭由 <strong>$dir_handle</strong> 指定的目录流。流必须之前被 <strong>opendir()</strong> 所打开。

<comment>Param:</comment>
  <info>resource|null</info>  <strong>$dir_handle</strong>  目录句柄的 <info>resource</info>，之前由 <strong>opendir()</strong> 所打开的。如果目录句柄没有指定，
                              那么会假定为是 <strong>opendir()</strong> 所打开的最后一个句柄。

<comment>Return:</comment>
  <info>void</info>  没有返回值。


id: closelog
type: function
doc:
<comment>Description:</comment>
  关闭系统日志链接
  
  <strong>closelog()</strong> 关闭用于通信的描述符并写入系统日志。<strong>closelog()</strong>是可选的。

<comment>Return:</comment>
  <info>true</info>  总是返回 <info>true</info>。

<comment>See Also:</comment>
   * <strong>syslog()</strong>
   * <strong>openlog()</strong>


id: com
type: class
doc:
<comment>Description:</comment>
  The com class allows you to instantiate an OLE compatible COM object and call its methods and
  access its properties.


id: com::__construct
type: function
doc:
<comment>Description:</comment>
  com class constructor
  
  Constructs a new com object.

<comment>Param:</comment>
  <info>string</info>             <strong>$module_name</strong>  Can be a ProgID, Class ID or Moniker that names the component to
                                   load.
                                   
                                   A ProgID is typically the application or DLL name, followed by a
                                   period, followed by the object name. e.g: <return>Word.Application</return>.
                                   
                                   A Class ID is the UUID that uniquely identifies a given class.
                                   
                                   A Moniker is a special form of naming, similar in concept to a
                                   URL scheme, that identifies a resource and specifies how it
                                   should be loaded.  As an example, you could load up Word and get
                                   an object representing a word document by specifying the full
                                   path to the word document as the module name, or you can use
                                   <return>LDAP:</return> as a moniker to use the ADSI interface to LDAP.
  <info>array|string|null</info>  <strong>$server_name</strong>  The name of the DCOM server on which the component should be
                                   loaded and run.  If <info>null</info>, the object is run using the default for
                                   the application.  The default is typically to run it on the local
                                   machine, although the administrator might have configured the
                                   application to launch on a different machine.
                                   
                                   If a non-<info>null</info> value is specified for server, PHP will refuse to
                                   load the object unless the com.allow_dcom php.ini option is set
                                   to <info>true</info>.
                                   
                                   If <strong>$server_name</strong> is an array, it should contain the following
                                   elements (case sensitive!).  Note that they are all optional
                                   (although you need to specify both Username and Password
                                   together); if you omit the Server setting, the default server
                                   will be used (as mentioned above), and the instantiation of the
                                   object will not be affected by the com.allow_dcom php.ini
                                   directive. DCOM server namekeytypedescriptionServerstringThe name
                                   of the server.UsernamestringThe username to connect
                                   as.PasswordstringThe password for <return>Username</return>.DomainstringThe domain
                                   of <return>server</return>.FlagsintegerOne or more of the following constants,
                                   logically OR'd together: <info>CLSCTX_INPROC_SERVER</info>,
                                   <info>CLSCTX_INPROC_HANDLER</info>, <info>CLSCTX_LOCAL_SERVER</info>, <info>CLSCTX_REMOTE_SERVER</info>,
                                   <info>CLSCTX_SERVER</info> and <info>CLSCTX_ALL</info>.  The default value if not specified
                                   here is <info>CLSCTX_SERVER</info> if you also omit <return>Server</return>, or
                                   <info>CLSCTX_REMOTE_SERVER</info> if you do specify a server.  You should
                                   consult the Microsoft documentation for CoCreateInstance for more
                                   information on the meaning of these constants; you will typically
                                   never have to use them.
  <info>int</info>                <strong>$codepage</strong>     Specifies the codepage that is used to convert strings to
                                   unicode-strings and vice versa.  The conversion is applied
                                   whenever a PHP string is passed as a parameter or returned from a
                                   method of this COM object.  The code page is sticky, which means
                                   that it will propagate to objects and variants returned from the
                                   object.
                                   
                                   Possible values are <info>CP_ACP</info> (use system default ANSI code page -
                                   the default if this parameter is omitted), <info>CP_MACCP</info>, <info>CP_OEMCP</info>,
                                   <info>CP_SYMBOL</info>, <info>CP_THREAD_ACP</info> (use codepage/locale set for the current
                                   executing thread), <info>CP_UTF7</info> and <info>CP_UTF8</info>.  You may also use the
                                   number for a given codepage; consult the Microsoft documentation
                                   for more details on codepages and their numeric values.


id: com_create_guid
type: function
doc:
<comment>Description:</comment>
  Generate a globally unique identifier (GUID)
  
  Generates a Globally Unique Identifier (GUID).
  
  A GUID is generated in the same way as DCE UUID's, except that the Microsoft convention is to
  enclose a GUID in curly braces.

<comment>Return:</comment>
  <info>string|false</info>  Returns the GUID as a string,  或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>uuid_create()</strong> in the PECL uuid extension


id: com_event_sink
type: function
doc:
<comment>Description:</comment>
  Connect events from a COM object to a PHP object
  
  Instructs COM to sink events generated by <strong>$variant</strong> into the PHP object <strong>$sink_object</strong>.
  
  Be careful how you use this feature; if you are doing something similar to the example below, then
  it doesn't really make sense to run it in a web server context.

<comment>Param:</comment>
  <info>variant</info>            <strong>$variant</strong>         
  <info>object</info>             <strong>$sink_object</strong>     <strong>$sink_object</strong> should be an instance of a class with methods
                                      named after those of the desired dispinterface; you may use
                                      <strong>com_print_typeinfo()</strong> to help generate a template class for
                                      this purpose.
  <info>array|string|null</info>  <strong>$sink_interface</strong>  PHP will attempt to use the default dispinterface type
                                      specified by the typelibrary associated with <strong>$variant</strong>, but you
                                      may override this choice by setting <strong>$sink_interface</strong> to the
                                      name of the dispinterface that you want to use.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>com_print_typeinfo()</strong>
   * <strong>com_message_pump()</strong>


id: com_get_active_object
type: function
doc:
<comment>Description:</comment>
  Returns a handle to an already running instance of a COM object
  
  <strong>com_get_active_object()</strong> is similar to creating a new instance of a  object, except that it will
  only return an object to your script if the object is already running. OLE applications use
  something known as the "<return>Running Object Table</return>" to allow well-known applications to be launched only
  once; this function exposes the COM library function GetActiveObject() to get a handle on a
  running instance.

<comment>Param:</comment>
  <info>string</info>    <strong>$prog_id</strong>   <strong>$prog_id</strong> must be either the ProgID or CLSID for the object that you want to
                       access (for example <return>Word.Application</return>).
  <info>int|null</info>  <strong>$codepage</strong>  Acts in precisely the same way that it does for the  class.

<comment>Return:</comment>
  <info>variant</info>  If the requested object is running, it will be returned to your script just like any
           other COM object.


id: com_load_typelib
type: function
doc:
<comment>Description:</comment>
  载入 Typelib
  
  载入类型库并在引擎中注册它们的常量，就像使用 <strong>define()</strong> 定义一样。
  
  注意，使用 com.typelib-file php.ini 配置设置来预载入和注册常量会更加有效，尽管不是那么灵活。
  
  如果开启 com.autoregister-typelib，然后 PHP 将在实例化 COM 对象时尝试自动注册与其相关的常量。这取
  决于 COM 对象本身提供的接口并且不总是可用。

<comment>Param:</comment>
  <info>string</info>  <strong>$typelib</strong>           <strong>$typelib</strong> 可以是以下其中一个： <return>.tlb</return> 文件或者包含类型库的可执行模块的文件
                             名。  类型库 GUID，后跟版本号，例如
                             <return>{00000200-0000-0010-8000-00AA006D2EA4},2,0</return>。  类型库名称，例如
                             <return>Microsoft OLE DB ActiveX Data Objects 1.0 Library</return>。  PHP 将会尝试按照此
                             顺序解析类型库，随着该列表的推进，该过程变得越来越昂贵；通过物理枚举注
                             册表来按名称搜索类型库，直到找到匹配项。
                             
                             <return>.tlb</return> 文件或者包含类型库的可执行模块的文件名。
                             
                             类型库 GUID，后跟版本号，例如
                             <return>{00000200-0000-0010-8000-00AA006D2EA4},2,0</return>。
                             
                             类型库名称，例如 <return>Microsoft OLE DB ActiveX Data Objects 1.0 Library</return>。
  <info>bool</info>    <strong>$case_insensitive</strong>  <strong>$case_insensitive</strong> 的行为正好与 <strong>define()</strong> 中的 <return>$case_insensitive</return> 参数相
                             反。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: com_message_pump
type: function
doc:
<comment>Description:</comment>
  Process COM messages, sleeping for up to timeoutms milliseconds
  
  This function will sleep for up to <strong>$timeout_milliseconds</strong> milliseconds, or until a message arrives
  in the queue.
  
  The purpose of this function is to route COM calls between apartments and handle various
  synchronization issues.  This allows your script to wait efficiently for events to be triggered,
  while still handling other events or running other code in the background.  You should use it in a
  loop, as demonstrated by the example in the <strong>com_event_sink()</strong> function, until you are finished
  using event bound COM objects.

<comment>Param:</comment>
  <info>int</info>  <strong>$timeout_milliseconds</strong>  The timeout, in milliseconds.
                              
                              If you do not specify a value for <strong>$timeout_milliseconds</strong>, then 0 will
                              be assumed.  A 0 value means that no waiting will be performed; if
                              there are messages pending they will be dispatched as before; if there
                              are no messages pending, the function will return <info>false</info> immediately
                              without sleeping.

<comment>Return:</comment>
  <info>bool</info>  If a message or messages arrives before the timeout, they will be dispatched, and the
        function will return <info>true</info>. If the timeout occurs and no messages were processed, the return
        value will be <info>false</info>.


id: com_print_typeinfo
type: function
doc:
<comment>Description:</comment>
  Print out a PHP class definition for a dispatchable interface
  
  The purpose of this function is to help generate a skeleton class for use as an event sink.  You
  may also use it to generate a dump of any COM object, provided that it supports enough of the
  introspection interfaces, and that you know the name of the interface you want to display.

<comment>Param:</comment>
  <info>variant|string</info>  <strong>$variant</strong>             <strong>$variant</strong> should be either an instance of a COM object, or be
                                       the name of a typelibrary (which will be resolved according
                                       to the rules set out in <strong>com_load_typelib()</strong>).
  <info>string|null</info>     <strong>$dispatch_interface</strong>  The name of an <return>IDispatch</return> descendant interface that you want
                                       to display.
  <info>bool</info>            <strong>$display_sink</strong>        If set to <info>true</info>, the corresponding sink interface will be
                                       displayed instead.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>com_event_sink()</strong>
   * <strong>com_load_typelib()</strong>


id: compact
type: function
doc:
<comment>Description:</comment>
  建立一个数组，包括变量名和它们的值
    
  
  创建一个包含变量与其值的数组。
  
  对每个参数，<strong>compact()</strong> 在当前的符号表中查找该变量名并将它添加到输出的数组中，变量名成为键名而变量的
  内容成为该键的值。简单说，它做的事和 <strong>extract()</strong> 正好相反。返回将所有变量添加进去后的数组。
  
  在 PHP 7.3 之前版本，未设置的字符串会被静默忽略。

<comment>Param:</comment>
  <info>array|string</info>  <strong>$var_name</strong>  <strong>compact()</strong> 接受可变的参数数量。每个参数不是包含变量名的字符串，就是变量名
                           组成的数组。数组中可以包含由其他变量名组成的数组，<strong>compact()</strong> 会递归处理。

<comment>Return:</comment>
  <info>array</info>  返回输出的数组，包含了添加的所有变量。

<comment>See Also:</comment>
   * <strong>extract()</strong>


id: connection_aborted
type: function
doc:
<comment>Description:</comment>
  检查客户端是否已经断开
  
  检查客户端是否已经断开。

<comment>Return:</comment>
  <info>int</info>  如果客户端已经断开则返回1，否则返回0。

<comment>See Also:</comment>
   * <strong>connection_status()</strong>
   * <strong>ignore_user_abort()</strong>
   * 
     查看连接处理
     了解PHP处理连接的详情。
    


id: connection_status
type: function
doc:
<comment>Description:</comment>
  返回连接的状态位
  
  获得当前连接的状态位。

<comment>Return:</comment>
  <info>int</info>  获得当前连接的状态位, 可以用于与 <return>CONNECTION_XXX</return> 定义的常量来确定连接状态。

<comment>See Also:</comment>
   * <strong>connection_aborted()</strong>
   * <strong>ignore_user_abort()</strong>
   * 
     查看连接处理了解PHP处理连接的详情。
    


id: constant
type: function
doc:
<comment>Description:</comment>
  返回一个常量的值
  
  返回 <strong>$name</strong> 对应的常量的值。
  
  当你不知道常量名，却需要获取常量的值时，<strong>constant()</strong> 就很有用了。也就是说，常量名储存在一个变量里，
  或者由函数返回时。
  
  该函数也适用类常量和 enum cases。

<comment>Param:</comment>
  <info>string</info>  <strong>$name</strong>  常量名。

<comment>Return:</comment>
  <info>mixed</info>  返回常量的值。

<comment>See Also:</comment>
   * <strong>define()</strong>
   * <strong>defined()</strong>
   * <strong>get_defined_constants()</strong>
   * 关于 常量 的章节


id: convert_cyr_string
type: function
doc:
<comment>Description:</comment>
  将字符由一种 Cyrillic 字符转换成另一种
  
  此函数将给定的字符串从一种 Cyrillic 字符转换成另一种，返回转换之后的字符串。

<comment>Param:</comment>
  <info>string</info>  <strong>$str</strong>   要转换的字符。
  <info>string</info>  <strong>$from</strong>  单个字符，代表源 Cyrillic 字符集。
  <info>string</info>  <strong>$to</strong>    单个字符，代表了目标 Cyrillic 字符集。

<comment>Return:</comment>
  <info>string</info>  返回转换后的字符串。

<comment>See Also:</comment>
   * <strong>mb_convert_encoding()</strong>
   * <strong>iconv()</strong>


id: convert_uudecode
type: function
doc:
<comment>Description:</comment>
  解码一个 uuencode 编码的字符串
  
  <strong>convert_uudecode()</strong> 解码一个 uuencode 编码的字符串。
  
  <strong>convert_uudecode()</strong> 既不接受 <return>begin</return> 行也不接受 <return>end</return>，它们是 uuencoded files 的一部分。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  uuencode 编码后的数据。

<comment>Return:</comment>
  <info>string|false</info>  返回解码后的字符串数据， 或者在失败时返回 <info>false</info>.。

<comment>See Also:</comment>
   * <strong>convert_uuencode()</strong>


id: convert_uuencode
type: function
doc:
<comment>Description:</comment>
  使用 uuencode 编码一个字符串
  
  <strong>convert_uuencode()</strong> 使用 uuencode 算法对一个字符串进行编码。
  
  uuencode 算法会将所有（含二进制数据）字符串转化为可输出的字符，并且可以被安全的应用于网络传输。使
  用 uuencode 编码后的数据将会比源数据大 35% 左右。
  
  <strong>convert_uuencode()</strong> 既不生成 <return>begin</return> 行也不产生 <return>end</return>，它们是 uuencoded files 的一部分。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  需要被编码的数据。

<comment>Return:</comment>
  <info>string</info>  返回 uuencode 编码后的数据。

<comment>See Also:</comment>
   * <strong>convert_uudecode()</strong>
   * <strong>base64_encode()</strong>


id: copy
type: function
doc:
<comment>Description:</comment>
  拷贝文件
  
  将文件从 <strong>$from</strong> 拷贝到 <strong>$to</strong>。
  
  如果要移动文件的话，请使用 <strong>rename()</strong> 函数。

<comment>Param:</comment>
  <info>string</info>         <strong>$from</strong>     源文件路径。
  <info>string</info>         <strong>$to</strong>       目标路径。如果 <strong>$to</strong> 是一个 URL，则如果封装协议不支持覆盖已有的文件时拷贝操
                           作会失败。
                           
                           如果目标文件已存在，将会被覆盖。
  <info>resource|null</info>  <strong>$context</strong>  A valid context resource created with  <strong>stream_context_create()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>move_uploaded_file()</strong>
   * <strong>rename()</strong>
   * The section of the manual about handling file uploads


id: cos
type: function
doc:
<comment>Description:</comment>
  余弦
  
  <strong>cos()</strong> 返回参数 <strong>$num</strong> 的余弦值。参数 <strong>$num</strong> 的单位为弧度。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  以弧度表示的角度

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 的余弦值

<comment>See Also:</comment>
   * <strong>acos()</strong>
   * <strong>sin()</strong>
   * <strong>tan()</strong>
   * <strong>deg2rad()</strong>


id: cosh
type: function
doc:
<comment>Description:</comment>
  双曲余弦
  
  返回 <strong>$num</strong> 的双曲余弦值，定义为 <return>(exp($num) + exp(-$num))/2</return>。

<comment>Param:</comment>
  <info>float</info>  <strong>$num</strong>  要处理的参数

<comment>Return:</comment>
  <info>float</info>  <strong>$num</strong> 的双曲余弦值。

<comment>See Also:</comment>
   * <strong>cos()</strong>
   * <strong>acosh()</strong>
   * <strong>sinh()</strong>
   * <strong>tanh()</strong>


id: count
type: function
doc:
<comment>Description:</comment>
  统计数组、Countable 对象中所有元素的数量
  
  用于数组时，统计数组中元素的数量；用于实现了 Countable 接口的对象时，返回 Countable::count 方法的
  返回值。

<comment>Param:</comment>
  <info>Countable|array</info>  <strong>$value</strong>  数组或者 Countable  对象。
  <info>int</info>              <strong>$mode</strong>   如果可选的 <strong>$mode</strong> 参数设为 <info>COUNT_RECURSIVE</info>（或 1），<strong>count()</strong> 将递归地对数组
                           计数。对计算多维数组的所有单元尤其有用。
                           
                           <strong>count()</strong> 能检测递归来避免无限循环，但每次出现时会产生 <info>E_WARNING</info> 错误 （如
                           果 array 不止一次包含了自身）并返回大于预期的统计数字。

<comment>Return:</comment>
  <info>int</info>  返回 <strong>$value</strong> 中的元素的数量。在 PHP 8.0.0 之前，如果参数既不是数组也不是实现了 <return>Countable</return> 接口
       的对象，将返回 <return>1</return>。当 <strong>$value</strong> 为 <info>null</info> 时返回  <return>0</return>。

<comment>See Also:</comment>
   * <strong>is_array()</strong>
   * <strong>isset()</strong>
   * <strong>empty()</strong>
   * <strong>strlen()</strong>
   * <strong>is_countable()</strong>
   * Array 数组


id: count_chars
type: function
doc:
<comment>Description:</comment>
  返回字符串所用字符的信息
  
  统计 <strong>$string</strong> 中每个字节值（0..255）出现的次数，使用多种模式返回结果。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  需要统计的字符串。
  <info>int</info>     <strong>$mode</strong>    参见返回的值。

<comment>Return:</comment>
  <info>array|string</info>  根据不同的   <strong>$mode</strong>，<strong>count_chars()</strong> 返回下列不同的结果：  0 - 以所有的每个字节值作为键
                名，出现次数作为值的数组。  1 - 与 0 相同，但只列出出现次数大于零的字节值。  2 - 与
                0 相同，但只列出出现次数等于零的字节值。  3 - 返回由所有使用了的字节值组成的字符串。
                4 - 返回由所有未使用的字节值组成的字符串。
                
                0 - 以所有的每个字节值作为键名，出现次数作为值的数组。
                
                1 - 与 0 相同，但只列出出现次数大于零的字节值。
                
                2 - 与 0 相同，但只列出出现次数等于零的字节值。
                
                3 - 返回由所有使用了的字节值组成的字符串。
                
                4 - 返回由所有未使用的字节值组成的字符串。

<comment>See Also:</comment>
   * <strong>strpos()</strong>
   * <strong>substr_count()</strong>


id: crc32
type: function
doc:
<comment>Description:</comment>
  计算一个字符串的 crc32 多项式
  
  生成 <strong>$string</strong> 的 32 位循环冗余校验和多项式。这通常用于检查正在传输的数据是否完整。
  
  由于 PHP 的整数类型是有符号的，所以在 32 位系统上许多 crc32 校验和将产生负整数。不过在 64 位上所有
  <strong>crc32()</strong> 的结果将都是正整数。
  
  因此需要使用 <strong>sprintf()</strong> 或 <strong>printf()</strong> 的“%u”格式标志符获取十进制格式的无符号 crc32 校验和的字符串表示
  形式。
  
  对于十六进制的校验和可以使用 <strong>sprintf()</strong> 或 <strong>printf()</strong> 的“%x”格式标志符或 <strong>dechex()</strong> 转换程序，这两个函
  数负责将 <strong>crc32()</strong> 结果转为无符号整数。
  
  64 位的设备也会返回负数，更高的结果值会破坏十六进制转换，因为负数会得到额外的 0xFFFFFFFF########
  偏移量。由于十六进制似乎是最常见的用例，所以决定不破坏该原则，即使从 32 位移动到 64 位时破坏了大约
  50% 的十进制直接比较。
  
  回想一下，让函数返回整数可能不是最好的主意，而立即返回十六进制的字符串（例如 <strong>md5()</strong>）可能是更好的开
  始。
  
  可移植方案可以考虑通用的 <strong>hash()</strong>。hash("crc32b", $str) 返回跟 str_pad(dechex(crc32($str)), 8, '0',
  STR_PAD_LEFT) 相同的字符串。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  要校验的数据。

<comment>Return:</comment>
  <info>int</info>  以整数形式返回 <strong>$string</strong> 的 crc32 校验和。

<comment>See Also:</comment>
   * <strong>hash()</strong>
   * <strong>md5()</strong>
   * <strong>sha1()</strong>


id: create_function
type: function
doc:
<comment>Description:</comment>
  通过执行代码字符串创建动态函数
  
  从传递的参数中创建动态参数，并返回它的唯一名字。
  
  此函数在内部执行 <strong>eval()</strong>，因此具有跟 <strong>eval()</strong> 相同的安全问题。还有性能以及内存使用较差的特性，因为创
  建的函数是全局的且无法释放。
  
  应该使用原生匿名函数。

<comment>Param:</comment>
  <info>string</info>  <strong>$args</strong>  The function arguments, as a single comma-separated string.
  <info>string</info>  <strong>$code</strong>  The function code.

<comment>Return:</comment>
  <info>string</info>  Returns a unique function name as a string,  或者在失败时返回 <info>false</info>. Note that the name
          contains a non-printable character (<return>"\0"</return>), so care should be taken when printing the name
          or incorporating it in any other string.

<comment>See Also:</comment>
   * 匿名函数


id: crypt
type: function
doc:
<comment>Description:</comment>
  单向字符串散列
  
  <strong>crypt()</strong> 返回基于标准 UNIX DES 算法或替代算法的散列字符串。<strong>password_verify()</strong> 兼容 <strong>crypt()</strong>。因此，由
  <strong>crypt()</strong> 创建的密码散列可以跟 <strong>password_verify()</strong> 一起使用。
  
  在 PHP 8.0.0 之前，<strong>$salt</strong> 参数是可选的。然而，如果没有 <strong>$salt</strong>，<strong>crypt()</strong>  会创建弱散列。在没有它的情况
  下引发 <info>E_NOTICE</info> 级别的错误。为了更好的安全性，请确保指定足够强度的盐值。
  
  <strong>password_hash()</strong> 使用了强散列，产生足够强的盐值，并自动应用合适的轮次。<strong>password_hash()</strong>  是<strong>crypt()</strong>
  的简单封装，并且与现有的密码散列兼容。推荐使用 <strong>password_hash()</strong>。
  
  散列类型由盐值参数触发。如果没有提供盐值，PHP 将自动生成一个 2 个字符（DES）或者 12 个字符（MD5）
  的盐值 ，这取决于 MD5 crypt() 的可用性。PHP 设置了名为 <info>CRYPT_SALT_LENGTH</info> 的常量，用来表示可用散列
  允许的最长有效盐值。
  
  基于标准 DES 算法的 <strong>crypt()</strong> 在输出内容的开始位置返回两个字符的盐值。它也只使用 <strong>$string</strong> 的开始 8 个
  字符，所以更长的以相同 8 个字符开始的字符串也将生成相同的结果（当使用了相同的盐值时）。
  
  支持以下散列类型：
  
  <info>CRYPT_STD_DES</info> - 基于标准 DES 算法的散列使用 "./0-9A-Za-z" 字符中的两个字符作为盐值。在盐值中使用非
  法的字符将导致 crypt() 失败。
  
  <info>CRYPT_EXT_DES</info> - 扩展的基于 DES 算法的散列。“sale” 为 9 个字符的字符串，由 1 个下划线后面跟着 4 字
  符循环次数和 4 字符盐值组成。这些 4 字符字符串都编码为 24 字节，最低有效位在前。值 <return>0</return> 到 <return>63</return> 被编码
  为 <return>./0-9A-Za-z</return>。在盐值中使用非法的字符将导致 crypt() 失败。
  
  <info>CRYPT_MD5</info> - MD5 散列使用一个以 $1$ 开始的 12 字符的字符串盐值。
  
  <info>CRYPT_BLOWFISH</info> - Blowfish 散列使用如下盐值：“$2a$”、“$2x$” 或 “$2y$”，两位 cost 参数，“$” 以及 22
  位由 “./0-9A-Za-z” 中的字符组合而成的字符串。在盐值中使用此范围之外的字符将导致 crypt() 返回一个空
  字符串。两位 cost 参数是循环次数以 2 为底的对数，它的范围是 04-31，超出这个范围将导致 crypt() 失
  败。 “$2x$” 可能很弱，“$2x$” 散列对其兼容并增强安全性。对于新的散列，应该使用“$2y$”。
  
  <info>CRYPT_SHA256</info> - SHA-256 算法使用一个以 $5$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以
  “rounds=\<N&gt;$” 开头，N 的数字值将被用来指定散列循环的执行次数，这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000，最小是 1000，最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。
  
  <info>CRYPT_SHA512</info> - SHA-512 算法使用一个以 $6$ 开头的 16 字符字符串盐值进行散列。如果盐值字符串以
  “rounds=\<N&gt;$” 开头，N 的数字值将被用来指定散列循环的执行次数，这点很像 Blowfish 算法的 cost 参数。默认的循环次数是 5000，最小是 1000，最大是 999,999,999。超出这个范围的 N 将会被转换为最接近的值。

<comment>Param:</comment>
  <info>string</info>  <strong>$string</strong>  待散列的字符串。
                   
                   使用 <info>CRYPT_BLOWFISH</info> 算法将导致 <strong>$string</strong> 被裁剪为一个最长72 字节的字符串。
  <info>string</info>  <strong>$salt</strong>    盐值字符串。如果没有提供，算法行为将由不同的算法实现决定，并可能导致不可预料的结
                   束。

<comment>Return:</comment>
  <info>string</info>  返回散列后的字符串或一个少于 13 字符的字符串，从而保证在失败时与盐值区分开来。
          
          当校验密码时，应该使用一个不容易被时间攻击的字符串比较函数来比较<strong>crypt()</strong>的输出与之前已知的
          散列。出于这个目的，PHP 提供了<strong>hash_equals()</strong>。

<comment>See Also:</comment>
   * <strong>hash_equals()</strong>
   * <strong>password_hash()</strong>
   * 更多关于 crypt 函数的信息，请阅读 Unix man 页面


id: ctype_alnum
type: function
doc:
<comment>Description:</comment>
  检测字母数字式字符
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 是否全部为字母数字。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$text</strong> 中所有的字符不是字母就是数字，则返回 <info>true</info>，否则返回 <info>false</info>。当使用空字符串调用时，
        结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_alpha()</strong>
   * <strong>ctype_digit()</strong>
   * <strong>setlocale()</strong>
   * <strong>IntlChar::isalnum()</strong>


id: ctype_alpha
type: function
doc:
<comment>Description:</comment>
  检测字母字符
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的所有字符是否都是字母。在标准的 <return>C</return> 语言区域设置中，字母仅仅是指
  <return>[A-Za-z]</return>，并且如果 $text 是单个字符，则 <strong>ctype_alpha()</strong> 等同于 <return>(ctype_upper($text) ||
  ctype_lower($text))</return>，但是在其他语言中有些字母既不视为大写也不视为小写。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果在当前区域设置中 <strong>$text</strong> 里的每个字符都是字母，那么就返回 <info>true</info>，否则返回 <info>false</info>。当使用空字
        符串调用时，结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_upper()</strong>
   * <strong>ctype_lower()</strong>
   * <strong>setlocale()</strong>
   * <strong>IntlChar::isalpha()</strong>


id: ctype_cntrl
type: function
doc:
<comment>Description:</comment>
  检测控制字符
  
  检查提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的字符是否都是控制字符。控制字符有：换行、缩进、转义。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果在当前区域设置中 <strong>$text</strong> 里的每个字符都是控制字符，那么就返回 <info>true</info>；否则返回 <info>false</info>。当使用
        空字符串调用时，结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_print()</strong>
   * <strong>IntlChar::iscntrl()</strong>


id: ctype_digit
type: function
doc:
<comment>Description:</comment>
  检测数字字符
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的所有字符是否都是数字。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$text</strong> 中每个字符都是十进制数字，那么就返回 <info>true</info>，否则返回 <info>false</info>。当使用空字符串调用时，
        结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_alnum()</strong>
   * <strong>ctype_xdigit()</strong>
   * <strong>is_numeric()</strong>
   * <strong>is_int()</strong>
   * <strong>is_string()</strong>
   * <strong>IntlChar::isdigit()</strong>


id: ctype_graph
type: function
doc:
<comment>Description:</comment>
  检测除空格外的任何打印字符
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的所有字符是否都是输出可见。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$text</strong> 中每个字符都是输出可见的（没有空白），那么就返回 <info>true</info>，否则返回 <info>false</info>。当使用空字
        符串调用时，结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_alnum()</strong>
   * <strong>ctype_print()</strong>
   * <strong>ctype_punct()</strong>
   * <strong>IntlChar::isgraph()</strong>


id: ctype_lower
type: function
doc:
<comment>Description:</comment>
  检测小写字符
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的所有字符是否都是小写字母。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果在当前区域设置中 <strong>$text</strong> 里的每个字符都是小写字母，那么就返回 <info>true</info>；否则返回 <info>false</info>。当使用
        空字符串调用时，结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_alpha()</strong>
   * <strong>ctype_upper()</strong>
   * <strong>setlocale()</strong>
   * <strong>IntlChar::islower()</strong>


id: ctype_print
type: function
doc:
<comment>Description:</comment>
  检测可打印字符
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的所有字符是否都可打印。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果在当前的语言环境下 <strong>$text</strong> 里面的每个字符都能被实际输出（包括空白），那么就返回 <info>true</info>；如果
        <strong>$text</strong> 包含控制字符或者没有任何输出的字符，那么就返回 <info>false</info>。当使用空字符串调用时，结果始终为
        <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_cntrl()</strong>
   * <strong>ctype_graph()</strong>
   * <strong>ctype_punct()</strong>
   * <strong>IntlChar::isprint()</strong>


id: ctype_punct
type: function
doc:
<comment>Description:</comment>
  检测可打印的字符是不是不包含空白、数字和字母
    
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的所有字符是否都是标点符号。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$text</strong> 中每个字符都是可打印，但不是字母、数字，也不是空白，那么就返回 <info>true</info>；反之则返回
        <info>false</info>。当使用空字符串调用时，结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_cntrl()</strong>
   * <strong>ctype_graph()</strong>
   * <strong>IntlChar::ispunct()</strong>


id: ctype_space
type: function
doc:
<comment>Description:</comment>
  检测空白字符
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的所有字符是否都是创建空白。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$text</strong> 里面的每个字符都创建某种形式的空白，那么就返回 <info>true</info>；否则返回 <info>false</info>。除了空白字
        符，还包括制表符、垂直制表符、换行符、回车和换页符。当使用空字符串调用时，结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_cntrl()</strong>
   * <strong>ctype_graph()</strong>
   * <strong>ctype_punct()</strong>
   * <strong>IntlChar::isspace()</strong>


id: ctype_upper
type: function
doc:
<comment>Description:</comment>
  检测大写字符
  
  检测提供的 <info>string</info> 类型的 <strong>$text</strong> 里面的所有字符是否都是大写字符。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  要测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果在当前区域设置中 <strong>$text</strong> 里的每个字符都是大写字母，那么就返回 <info>true</info>；否则返回 <info>false</info>。当使用
        空字符串调用时，结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_alpha()</strong>
   * <strong>ctype_lower()</strong>
   * <strong>setlocale()</strong>
   * <strong>IntlChar::isupper()</strong>


id: ctype_xdigit
type: function
doc:
<comment>Description:</comment>
  检测字符是否只包含十六进制字符
    
  
  检查 <info>string</info> 类型的 <strong>$text</strong> 里面的字符是不是都是十六进制字符。

<comment>Param:</comment>
  <info>mixed</info>  <strong>$text</strong>  需要被测试的字符串。 
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串. 
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。
                
                如果给出一个 -128 到 255 之间(含)的<info>int</info>, 将会被解释为该值对应的ASCII字符 (负值将加上
                256 以支持扩展ASCII字符).
                其它整数将会被解释为该值对应的十进制字符串.
                
                自 PHP 8.1.0 起，弃用传递非字符串参数。未来该参数将解释为字符串而不是 ASCII 
                码点。根据预期行为，应将参数转为字符串或显式调用 <strong>chr()</strong>。

<comment>Return:</comment>
  <info>bool</info>  如果 <strong>$text</strong> 中每个字符都是十六进制“数字”，也就是只能包含十进制数字和 <return>[A-Fa-f]</return> 的字符，那么就
        返回 <info>true</info>。否则返回 <info>false</info>。当使用空字符串调用时，结果始终为 <info>false</info>。

<comment>See Also:</comment>
   * <strong>ctype_digit()</strong>
   * <strong>IntlChar::isxdigit()</strong>


id: cubrid_affected_rows
type: function
doc:
<comment>Description:</comment>
  Return the number of rows affected by the last SQL statement
  
  The <strong>cubrid_affected_rows()</strong> function is used to get the number of rows affected by the SQL
  statement (INSERT, DELETE, UPDATE).

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection. If the connection identifier is not specified,
                              the last link opend by <strong>cubrid_connect()</strong> is assumed.
  <info>resource</info>  <strong>$req_identifier</strong>   Request Identifier, could be returned from either <strong>cubrid_prepare()</strong> or
                              <strong>cubrid_execute()</strong>.  If the request identifier is not specified, the
                              last identifier requested by  <strong>cubrid_prepare()</strong> or <strong>cubrid_execute()</strong> is
                              assumed.

<comment>Return:</comment>
  <info>int</info>  Number of rows affected by the SQL statement, when process is successful.
       
       -1, when SQL statement is not INSERT, DELETE or UPDATE.
       
       <info>false</info>, when the request identifier is not specified, and there is no last request.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>


id: cubrid_bind
type: function
doc:
<comment>Description:</comment>
  Bind variables to a prepared statement as parameters
  
  The <strong>cubrid_bind()</strong> function is used to bind values to a corresponding named or question mark
  placeholder in the SQL statement that was passed to <strong>cubrid_prepare()</strong>. If <strong>$bind_value_type</strong> is not
  given, string will be the default.
  
  If the type of data to be bound is BLOB/CLOB, CUBRID will try to map the data as a PHP stream. If
  the actually bind value type is not stream, CUBRID will convert it to string, and use it as the
  full path and file name of a file on the client filesystem.
  
  If the type of data to be bound explicitly is ENUM, the <strong>$bind_value</strong> argument should be the enum
  element which is in string format.
  
  In CUBRID shard envrioment, the <strong>$bind_value_type</strong> must be included in  the <strong>cubrid_bind()</strong> function.
  
  The following table shows the types of substitute values.
  
  CUBRID Bind Date TypesSupportBind TypeCorresponding SQL TypeSupportedSTRINGCHAR,
  VARCHARNCHARNCHAR, NVARCHARBITBIT, VARBITNUMERIC or NUMBERSHORT, INT,
  NUMERICFLOATFLOATDOUBLEDOUBLETIMETIMEDATEDATETIMESTAMPTIMESTAMPOBJECTOBJECTENUMENUMBLOBBLOBCLOBCLOBNULLNULLNot
  supportedSETSETMULTISETMULTISETSEQUENCESEQUENCE

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>   Request identifier as a result of <strong>cubrid_prepare()</strong>.
  <info>int</info>       <strong>$bind_index</strong>       Location of binding parameters. It starts with 1.
  <info>mixed</info>     <strong>$bind_value</strong>       Actual value for binding.
  <info>string</info>    <strong>$bind_value_type</strong>  A type of the value to bind. (It is omitted by default. Thus, the
                              system internally uses string by default. However, you need to specify
                              the exact type of the value as an argument when they are NCHAR, BIT,
                              or BLOB/CLOB).

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_prepare()</strong>


id: cubrid_client_encoding
type: function
doc:
<comment>Description:</comment>
  Return the current CUBRID connection charset
  
  This function returns the current CUBRID connection charset and is similar to the CUBRID function
  <strong>cubrid_get_charset()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection. If the connection identifier is not specified,
                              the last link opened by <strong>cubrid_connect()</strong> is assumed.

<comment>Return:</comment>
  <info>string</info>  A string that represents the CUBRID connection charset; on success.
          
          <info>false</info> on failure.

<comment>See Also:</comment>
   * <strong>cubrid_get_charset()</strong>


id: cubrid_close
type: function
doc:
<comment>Description:</comment>
  Close CUBRID connection
  
  The <strong>cubrid_close()</strong> function ends the transaction currently in process, closes the connection
  handle and disconnects from server. If there is any request handles not closed yet at this point,
  they will be closed. It is similar to the CUBRID function <strong>cubrid_disconnect()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection identifier. If the connection identifier is not
                              specified, the last connection opened by <strong>cubrid_connect()</strong> is assumed.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info>, when process is successful.
        
        <info>false</info>, when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_disconnect()</strong>
   * <strong>cubrid_connect()</strong>
   * <strong>cubrid_connect_with_url()</strong>


id: cubrid_close_prepare
type: function
doc:
<comment>Description:</comment>
  Close the request handle 
  
  The <strong>cubrid_close_prepare()</strong> function closes the request handle given by the <strong>$req_identifier</strong>
  argument, and releases the memory region related to the handle. It is an alias of
  <strong>cubrid_close_request()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  Request identifier.

<comment>Return:</comment>
  <info>bool</info>  Return <info>true</info> on success.

<comment>See Also:</comment>
   * <strong>cubrid_close_request()</strong>


id: cubrid_close_request
type: function
doc:
<comment>Description:</comment>
  Close the request handle 
  
  The <strong>cubrid_close_request()</strong> function closes the request handle given by the <strong>$req_identifier</strong>
  argument, and releases the memory region related to the handle. It is an alias of
  <strong>cubrid_close_prepare()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  Request identifier.

<comment>Return:</comment>
  <info>bool</info>  Return <info>true</info> on success.

<comment>See Also:</comment>
   * <strong>cubrid_close_prepare()</strong>


id: cubrid_col_get
type: function
doc:
<comment>Description:</comment>
  Get contents of collection type column using OID
  
  The <strong>cubrid_col_get()</strong> function is used to get contents of the elements of the collection type (set,
  multiset, sequence) attribute you requested as an array.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance that you want to read.
  <info>string</info>    <strong>$attr_name</strong>        Attribute name that you want to read from the instance.

<comment>Return:</comment>
  <info>array</info>  Array (0-based numerical array) containing the elements you requested, when process is
         successful;
         
         <info>false</info> (to distinguish the error from the situation of attribute having empty collection or
         NULL, in case of error, a warning message is shown; in such case you can check the error by
         using <strong>cubrid_error_code()</strong>), when process is unsuccessful.


id: cubrid_col_size
type: function
doc:
<comment>Description:</comment>
  Get the number of elements in collection type column using OID
  
  The <strong>cubrid_col_size()</strong> function is used to get the number of elements in a collection type (set,
  multiset, sequence) attribute.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID the instance that you want to work with.
  <info>string</info>    <strong>$attr_name</strong>        Name of the attribute that you want to work with.

<comment>Return:</comment>
  <info>int</info>  Number of elements, when process is successful, 或者在失败时返回 <info>false</info>.


id: cubrid_column_names
type: function
doc:
<comment>Description:</comment>
  Get the column names in result
  
  The <strong>cubrid_column_names()</strong> function is used to get the column names of the query result by using
  <strong>$req_identifier</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  Request identifier.

<comment>Return:</comment>
  <info>array</info>  Array of string values containing the column names, when process is successful, 或者在失败
         时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_prepare()</strong>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_column_types()</strong>


id: cubrid_column_types
type: function
doc:
<comment>Description:</comment>
  Get column types in result
  
  The <strong>cubrid_column_types()</strong> function gets column types of query results by using <strong>$req_identifier</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  Request identifier.

<comment>Return:</comment>
  <info>array</info>  Array of string values containing the column types, when process is successful, 或者在失败
         时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_column_names()</strong>
   * <strong>cubrid_prepare()</strong>
   * <strong>cubrid_execute()</strong>


id: cubrid_commit
type: function
doc:
<comment>Description:</comment>
  Commit a transaction
  
  The <strong>cubrid_commit()</strong> function is used to execute commit on the transaction pointed by
  <strong>$conn_identifier</strong>, currently in progress. Connection to the server is closed after the
  <strong>cubrid_commit()</strong> function is called; However,  the connection handle is still valid.
  
  In CUBRID PHP, auto-commit mode is disabled by default for transaction management.  You can set it
  by using <strong>cubrid_set_autocommit()</strong>.  You can get its status by using <strong>cubrid_get_autocommit()</strong>. Before
  you start a transaction,  remember to disable the auto-commit mode.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_rollback()</strong>
   * <strong>cubrid_get_autocommit()</strong>
   * <strong>cubrid_set_autocommit()</strong>


id: cubrid_connect
type: function
doc:
<comment>Description:</comment>
  Open a connection to a CUBRID Server
  
  The <strong>cubrid_connect()</strong> function is used to establish the environment for connecting to your server
  by using your server address, port number, database name, user name, and password. If the user
  name and password is not given, then the "PUBLIC" connection will be made by default.

<comment>Param:</comment>
  <info>string</info>  <strong>$host</strong>      Host name or IP address of CUBRID CAS server.
  <info>int</info>     <strong>$port</strong>      Port number of CUBRID CAS server (BROKER_PORT configured in
                     $CUBRID/conf/cubrid_broker.conf).
  <info>string</info>  <strong>$dbname</strong>    Name of database.
  <info>string</info>  <strong>$userid</strong>    User name for the database. If not given, the default value is "public".
  <info>string</info>  <strong>$passwd</strong>    User password. If not given, the default value is "".
  <info>bool</info>    <strong>$new_link</strong>  If a second call is made to <strong>cubrid_connect()</strong> with the same arguments, no new
                     connection will be established, but instead, the connection identifier of the
                     already opened connection will be returned. The <strong>$new_link</strong> parameter modifies
                     this behavior and makes <strong>cubrid_connect()</strong> always open a new connection, even if
                     <strong>cubrid_connect()</strong> was called before with the same parameters.

<comment>Return:</comment>
  <info>resource</info>  Connection identifier, when process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_pconnect()</strong>
   * <strong>cubrid_connect_with_url()</strong>
   * <strong>cubrid_pconnect_with_url()</strong>
   * <strong>cubrid_disconnect()</strong>
   * <strong>cubrid_close()</strong>


id: cubrid_connect_with_url
type: function
doc:
<comment>Description:</comment>
  Establish the environment for connecting to CUBRID server
  
  The <strong>cubrid_connect_with_url()</strong> function is used to establish the environment for connecting to your
  server by using connection information passed with an url string argument. If the HA feature is
  enabled in CUBRID, you must specify the connection information of the standby server, which is
  used for failover when failure occurs, in the url string argument of this function. If the user
  name and password is not given, then the "PUBLIC" connection will be made by default.
  
  \<url&gt; ::= CUBRID:\<host&gt;:\<db_name&gt;:\<db_user&gt;:\<db_password&gt;:[?\<properties&gt;]
  
  \<properties&gt; ::= \<property&gt; [&\<property&gt;]
  
  \<properties&gt; ::= alhosts=\<alternative_hosts&gt;[ &rctime=\<time&gt;]
  
  \<properties&gt; ::= login_timeout=\<milli_sec&gt;
  
  \<properties&gt; ::= query_timeout=\<milli_sec&gt;
  
  \<properties&gt; ::= disconnect_on_query_timeout=true|false
  
  \<alternative_hosts&gt; ::= \<standby_broker1_host&gt;:\<port&gt; [,\<standby_broker2_host&gt;:\<port&gt;]
  
  \<host&gt; := HOSTNAME | IP_ADDR
  
  \<time&gt; := SECOND
  
  \<milli_sec&gt; := MILLI SECOND
  
  host : A host name or IP address of the master databasedb_name : A name of the databasedb_user : A
  name of the database userdb_password : A database user password alhosts : Specifies the broker
  information of the standby server, which is used for failover when it is impossible to connect to
  the active server.  You can specify multiple brokers for failover, and the connection to the
  brokers is attempted in the order listed in alhosts rctime : An interval between the attempts to
  connect to the active broker in which failure occurred. After a failure occurs, the system
  connects to the  broker specified by althosts (failover), terminates the transaction, and then
  attempts to connect to the active broker of the master database at every rctime.  The default
  value is 600 seconds. login_timeout : Timeout value (unit: msec.) for database login. The default
  value is 0, which means infinite postponement.  query_timeout : Timeout value (unit: msec.) for
  query request. Upon timeout, a message to cancel requesting a query transferred to server is sent.
  The return  value can depend on the disconnect_on_query_timeout configuration; even though the
  message to cancel a request is sent to server, that request may succeed.
  disconnect_on_query_timeout : Configures a value whether to immediately return an error of
  function being executed upon timeout. The default value is false.
  
  <return>?</return> and <return>:</return> that are used as identifiers in PHP connection URL can't be included in the password. The
  following is an example of a password that is invalid to use as connection URL because it contains
  "<return>?:</return>".
  
  $url = "CUBRID:localhost:33000:tdb:dba:12?:?login_timeout=100";
  
  Passwords that contain <return>?</return> or <return>:</return> may be passed as a separate parameter.
  
  $url = "CUBRID:localhost:33000:tbd:::?login_timeout=100";
  
  $conn = cubrid_connect_with_url($url, "dba", "12?");
  
  If user or password is empty,you can't delete "<return>:</return>",the following is an example.
  
  $url = "CUBRID:localhost:33000:demodb:::";

<comment>Param:</comment>
  <info>string</info>  <strong>$conn_url</strong>  A character string that contains server connection information.
  <info>string</info>  <strong>$userid</strong>    User name for the database.
  <info>string</info>  <strong>$passwd</strong>    User password.
  <info>bool</info>    <strong>$new_link</strong>  If a second call is made to <strong>cubrid_connect_with_url()</strong> with the same arguments,
                     no new connection will be established, but instead, the connection identifier
                     of the already opened connection will be returned. The <strong>$new_link</strong> parameter
                     modifies this behavior and makes <strong>cubrid_connect_with_url()</strong> always open a new
                     connection, even if <strong>cubrid_connect_with_url()</strong> was called before with the same
                     parameters.

<comment>Return:</comment>
  <info>resource</info>  Connection identifier, when process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_connect()</strong>
   * <strong>cubrid_pconnect()</strong>
   * <strong>cubrid_pconnect_with_url()</strong>
   * <strong>cubrid_disconnect()</strong>
   * <strong>cubrid_close()</strong>


id: cubrid_current_oid
type: function
doc:
<comment>Description:</comment>
  Get OID of the current cursor location
  
  The <strong>cubrid_current_oid()</strong> function is used to get the oid of the current cursor location from the
  query result.  To use <strong>cubrid_current_oid()</strong>, the query executed must be a updatable query, and the
  <info>CUBRID_INCLUDE_OID</info> option must be included during the query execution.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  Request identifier.

<comment>Return:</comment>
  <info>string</info>  Oid of current cursor location, when process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>


id: cubrid_data_seek
type: function
doc:
<comment>Description:</comment>
  Move the internal row pointer of the CUBRID result
  
  This function performs the moving of the internal row pointer of the CUBRID result (associated
  with the specified result identifier) to point to a specific row number. There are functions, such
  as <strong>cubrid_fetch_assoc()</strong>, which use the current stored value of <strong>$row number</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>      The result.
  <info>int</info>       <strong>$row_number</strong>  This is the desired row number of the new result pointer.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> on success or <info>false</info> on failure.


id: cubrid_db_name
type: function
doc:
<comment>Description:</comment>
  Get db name from results of cubrid_list_dbs
  
  Retrieve the database name from a call to <strong>cubrid_list_dbs()</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$result</strong>  The result pointer from a call to <strong>cubrid_list_dbs()</strong>.
  <info>int</info>    <strong>$index</strong>   The index into the result set.

<comment>Return:</comment>
  <info>string</info>  Returns the database name on success, and <info>false</info> on failure. If <info>false</info> is returned, use
          <strong>cubrid_error()</strong> to determine the nature of the error.

<comment>See Also:</comment>
   * <strong>cubrid_list_dbs()</strong>


id: cubrid_disconnect
type: function
doc:
<comment>Description:</comment>
  Close a database connection
  
  The <strong>cubrid_disconnect()</strong> function closes the connection handle and disconnects from server. If any
  request handle is not closed at this point,  it will be closed. It is similar to the CUBRID MySQL
  compatible function <strong>cubrid_close()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_close()</strong>
   * <strong>cubrid_connect()</strong>
   * <strong>cubrid_connect_with_url()</strong>


id: cubrid_drop
type: function
doc:
<comment>Description:</comment>
  Delete an instance using OID
  
  The <strong>cubrid_drop()</strong> function is used to delete an instance from database by using the <strong>$oid</strong> of the
  instance.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              Oid of the instance that you want to delete.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_is_instance()</strong>


id: cubrid_errno
type: function
doc:
<comment>Description:</comment>
  Return the numerical value of the error message from previous CUBRID operation
  
  Returns the error number from the last CUBRID function.
  
  The <strong>cubrid_errno()</strong> function is used to get the error code of the error that occurred during the
  API execution.  Usually, it gets the error code when API returns false as its return value.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection identifier. If the connection identifier is not
                              specified, the last connection opened by <strong>cubrid_connect()</strong> is assumed.

<comment>Return:</comment>
  <info>int</info>  Returns the error number from the last CUBRID function, or <return>0</return> (zero) if no error occurred.

<comment>See Also:</comment>
   * <strong>cubrid_error()</strong>
   * <strong>cubrid_error_code()</strong>
   * <strong>cubrid_error_msg()</strong>


id: cubrid_error
type: function
doc:
<comment>Description:</comment>
  Get the error message
  
  The <strong>cubrid_error()</strong> function is used to get the error message that occurred during the use of
  CUBRID API. Usually, it gets error message when API returns false as its return value.

<comment>Param:</comment>
  <info>resource</info>  <strong>$connection</strong>  The CUBRID connection.

<comment>Return:</comment>
  <info>string</info>  Error message that occurred.

<comment>See Also:</comment>
   * <strong>cubrid_errno()</strong>
   * <strong>cubrid_error_code()</strong>
   * <strong>cubrid_error_msg()</strong>


id: cubrid_error_code
type: function
doc:
<comment>Description:</comment>
  Get error code for the most recent function call
  
  The <strong>cubrid_error_code()</strong> function is used to get the error code of the error that occurred during
  the API execution. Usually, it gets the error code when API returns false as its return value.

<comment>Return:</comment>
  <info>int</info>  Error code of the error that occurred, or <return>0</return> (zero) if no error occurred.

<comment>See Also:</comment>
   * <strong>cubrid_error_code_facility()</strong>
   * <strong>cubrid_error_msg()</strong>


id: cubrid_error_code_facility
type: function
doc:
<comment>Description:</comment>
  Get the facility code of error
  
  The <strong>cubrid_error_code_facility()</strong> function is used to get the facility code (level in which the
  error occurred) from the error code of the error that occurred during the API execution. Usually,
  you can get the error code when API returns false as its return value.

<comment>Return:</comment>
  <info>int</info>  Facility code of the error code that occurred:  <info>CUBRID_FACILITY_DBMS</info>, <info>CUBRID_FACILITY_CAS</info>,
       <info>CUBRID_FACILITY_CCI</info>, <info>CUBRID_FACILITY_CLIENT</info>.

<comment>See Also:</comment>
   * <strong>cubrid_error_code()</strong>
   * <strong>cubrid_error_msg()</strong>


id: cubrid_error_msg
type: function
doc:
<comment>Description:</comment>
  Get last error message for the most recent function call
  
  The <strong>cubrid_error_msg()</strong> function is used to get the error message that occurred during the use of
  CUBRID API. Usually, it gets error message when API returns false as its return value.

<comment>Return:</comment>
  <info>string</info>  Error message that occurred.

<comment>See Also:</comment>
   * <strong>cubrid_error_code()</strong>
   * <strong>cubrid_error_code_facility()</strong>


id: cubrid_execute
type: function
doc:
<comment>Description:</comment>
  Execute a prepared SQL statement
  
  The <strong>cubrid_execute()</strong> function is used to execute the given SQL statement. It executes the query by
  using <strong>$conn_identifier</strong> and SQL, and then returns the request identifier created. It is used for
  simple execution of query, where the parameter binding is not needed. In addition, the
  <strong>cubrid_execute()</strong> function is used to execute the prepared statement by means of <strong>cubrid_prepare()</strong>
  and <strong>cubrid_bind()</strong>. At this time, you need to specify arguments of <strong>$request_identifier</strong> and <strong>$option</strong>.
  
  The <strong>$option</strong> is used to determine whether to get OID after query execution and whether to execute
  the query in synchronous or asynchronous mode. <info>CUBRID_INCLUDE_OID</info> and <info>CUBRID_ASYNC</info> (or
  <info>CUBRID_EXEC_QUERY_ALL</info> if you want to execute multiple SQL statements) can be specified by using a
  bitwise OR operator. If not specified, neither of them isselected. If the flag
  <info>CUBRID_EXEC_QUERY_ALL</info> is set, a synchronous mode (sync_mode) is used to retrieve query results,
  and in such cases the following rules are applied:
  
  The return value is the result of the first query. If an error occurs in any query, the execution
  is processed as a failure.  In a query composed of q1 q2 q3, if an error occurs in q2 after q1
  succeeds the execution, the result of q1 remains valid. That is, the previous successful query
  executions are not rolled back when an error occurs.  If a query is executed successfully, the
  result of the second query can be obtained using <strong>cubrid_next_result()</strong>.
  
  If the first argument is <strong>$request_identifier</strong> to execute the <strong>cubrid_prepare()</strong> function, you can
  specify an option, <info>CUBRID_ASYNC</info> only.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>     Connection identifier.
  <info>string</info>    <strong>$sql</strong>                 SQL to be executed.
  <info>int</info>       <strong>$option</strong>              Query execution option <info>CUBRID_INCLUDE_OID</info>, <info>CUBRID_ASYNC</info>,
                                 <info>CUBRID_EXEC_QUERY_ALL</info>.
  <info>resource</info>  <strong>$request_identifier</strong>  <strong>cubrid_prepare()</strong> identifier.

<comment>Return:</comment>
  <info>resource</info>  Request identifier, when process is successful and first param is conn_identifier; <info>true</info>,
            when process is successful and first argument is request_identifier, 或者在失败时返回
            <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_prepare()</strong>
   * <strong>cubrid_bind()</strong>
   * <strong>cubrid_next_result()</strong>
   * <strong>cubrid_close_request()</strong>
   * <strong>cubrid_commit()</strong>
   * <strong>cubrid_rollback()</strong>


id: cubrid_fetch
type: function
doc:
<comment>Description:</comment>
  Fetch the next row from a result set
  
  The <strong>cubrid_fetch()</strong> function is used to get a single row from the query result.  The cursor
  automatically moves to the next row after getting the result.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$type</strong>    Array type of the fetched result CUBRID_NUM, CUBRID_ASSOC, CUBRID_BOTH,
                     CUBRID_OBJECT. If you want to operate the lob object, you can use CUBRID_LOB.

<comment>Return:</comment>
  <info>mixed</info>  Result array or object, when process is successful.
         
         <info>false</info>, when there are no more rows; NULL, when process is unsuccessful.
         
         The result can be received either as an array or as an object, and you can decide which
         data type to use by setting the <strong>$type</strong> argument. The <strong>$type</strong> variable can be set to one of the
         following values:
         
         When <strong>$type</strong> argument is omitted, the result will be received using CUBRID_BOTH option as
         default. When you want to receive query result in object data type, the column name of the
         result must obey the naming rules for identifiers in PHP.  For example, column name such as
         "count(*)" cannot be received in object type.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_fetch_array()</strong>
   * <strong>cubrid_fetch_row()</strong>
   * <strong>cubrid_fetch_assoc()</strong>
   * <strong>cubrid_fetch_object()</strong>


id: cubrid_fetch_array
type: function
doc:
<comment>Description:</comment>
  Fetch a result row as an associative array, a numeric array, or both
  
  The <strong>cubrid_fetch_array()</strong> function is used to get a single row from the query result and returns an
  array. The cursor automatically moves to the next row after getting the result.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$Result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$type</strong>    Array type of the fetched result CUBRID_NUM, CUBRID_ASSOC, CUBRID_BOTH. If you
                     need to operate the lob object, you can use CUBRID_LOB.

<comment>Return:</comment>
  <info>array</info>  Returns an array of strings that corresponds to the fetched row, when process is
         successful.
         
         <info>false</info>, when there are no more rows; NULL, when process is unsuccessful.
         
         The type of returned array depends on how type is defined. By using CUBRID_BOTH (default),
         you'll get an array with both associative and number indices, and you can decide which data
         type to use by setting the <strong>$type</strong> argument. The <strong>$type</strong> variable can be set to one of the
         following values:

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_fetch()</strong>
   * <strong>cubrid_fetch_row()</strong>
   * <strong>cubrid_fetch_assoc()</strong>
   * <strong>cubrid_fetch_object()</strong>


id: cubrid_fetch_assoc
type: function
doc:
<comment>Description:</comment>
  Return the associative array that corresponds to the fetched row
  
  This function returns the associative array, that corresponds to the fetched row, and then moves
  the internal data pointer ahead, or returns FALSE when the end is reached.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$type</strong>    Type can only be CUBRID_LOB, this parameter will be used only when you need to
                     operate the lob object.

<comment>Return:</comment>
  <info>array</info>  Associative array, when process is successful.
         
         <info>false</info>, when there are no more rows; NULL, when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_fetch()</strong>
   * <strong>cubrid_fetch_row()</strong>
   * <strong>cubrid_fetch_array()</strong>
   * <strong>cubrid_fetch_object()</strong>


id: cubrid_fetch_field
type: function
doc:
<comment>Description:</comment>
  Get column information from a result and return as an object
  
  This function returns an object with certain properties of the specific column. The properties of
  the object are:
  
  <strong>$name</strong>column name<strong>$table</strong>name of the table that the column belongs to<strong>$def</strong>default value of the
  column<strong>$max_length</strong>maximum length of the column<strong>$not_null</strong>1 if the column cannot be NULL<strong>$primary_key</strong>1
  if the column is a primary key<strong>$unique_key</strong>1 if the column is an unique key<strong>$multiple_key</strong>1 if the
  column is a non-unique key<strong>$numeric</strong>1 if the column is numeric<strong>$blob</strong>1 if the column is a BLOB<strong>$type</strong>the
  type of the column<strong>$unsigned</strong>1 if the column is unsigned<strong>$zerofill</strong>1 if the column is zero-filled
  
  column name
  
  name of the table that the column belongs to
  
  default value of the column
  
  maximum length of the column
  
  1 if the column cannot be NULL
  
  1 if the column is a primary key
  
  1 if the column is an unique key
  
  1 if the column is a non-unique key
  
  1 if the column is numeric
  
  1 if the column is a BLOB
  
  the type of the column
  
  1 if the column is unsigned
  
  1 if the column is zero-filled

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>        <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$field_offset</strong>  The numerical field offset. If the field offset is not specified, the
                           next field (that was not yet retrieved by this function) is retrieved.
                           The <strong>$field_offset</strong> starts at 0.

<comment>Return:</comment>
  <info>object</info>  Object with certain properties of the specific column, when process is successful.
          
          <info>false</info> on failure.


id: cubrid_fetch_lengths
type: function
doc:
<comment>Description:</comment>
  Return an array with the lengths of the values of each field from the current row
  
  This function returns a numeric array with the lengths of the values of each field from the
  current row of the result set or it returns FALSE on failure.
  
  If field data type is BLOB/CLOB, you should get its length by using <strong>cubrid_lob_size()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>

<comment>Return:</comment>
  <info>array</info>  A numeric array, when process is successful.
         
         <info>false</info> on failure.


id: cubrid_fetch_object
type: function
doc:
<comment>Description:</comment>
  Fetch the next row and return it as an object
  
  This function returns an object with the column names of the result set as properties. The values
  of these properties are extracted from the current row of the result.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>      <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>string</info>    <strong>$class_name</strong>  The name of the class to instantiate. If not specified, a <class>stdClass</class>
                         (stdClass is PHP's generic empty class that's used when casting other types
                         to objects) object is returned.
  <info>array</info>     <strong>$params</strong>      An optional <info>array</info> of parameters to pass to the constructor for <strong>$class_name</strong>
                         objects.
  <info>int</info>       <strong>$type</strong>        Type can only be CUBRID_LOB, this parameter will be used only when you need
                         to operate the lob object.

<comment>Return:</comment>
  <info>object</info>  An object, when process is successful.
          
          <info>false</info>, when there are no more rows; NULL, when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_fetch()</strong>
   * <strong>cubrid_fetch_array()</strong>
   * <strong>cubrid_fetch_assoc()</strong>
   * <strong>cubrid_fetch_row()</strong>


id: cubrid_fetch_row
type: function
doc:
<comment>Description:</comment>
  Return a numerical array with the values of the current row
  
  This function returns a numerical array with the values of the current row from the result set,
  starting from 0, and moves the internal data pointer ahead.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$type</strong>    Type can only be CUBRID_LOB, this parameter will be used only when you need to
                     operate the lob object.

<comment>Return:</comment>
  <info>array</info>  A numerical array, when process is successful.
         
         <info>false</info>, when there are no more rows; NULL, when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_fetch()</strong>
   * <strong>cubrid_fetch_array()</strong>
   * <strong>cubrid_fetch_assoc()</strong>
   * <strong>cubrid_fetch_object()</strong>


id: cubrid_field_flags
type: function
doc:
<comment>Description:</comment>
  Return a string with the flags of the given field offset
  
  This function returns a string with the flags of the given field offset separated by space. You
  can split the returned value using explode. The possible flags could be: <info>not_null</info>, <info>primary_key</info>,
  <info>unique_key</info>, <info>foreign_key</info>, <info>auto_increment</info>, <info>shared</info>, <info>reverse_index</info>, <info>reverse_unique</info> and <info>timestamp</info>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>        <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$field_offset</strong>  The numerical field offset. The <strong>$field_offset</strong> starts at 0. If
                           <strong>$field_offset</strong> does not exist, an error of level <info>E_WARNING</info> is also issued.

<comment>Return:</comment>
  <info>string</info>  A string with flags, when process is successful.
          
          <info>false</info> when invalid field_offset value.
          
          -1 if SQL sentence is not SELECT.


id: cubrid_field_len
type: function
doc:
<comment>Description:</comment>
  Get the maximum length of the specified field
  
  This function returns the maximum length of the specified field on success, or it returns FALSE on
  failure.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>        <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$field_offset</strong>  The numerical field offset. The <strong>$field_offset</strong> starts at 0. If
                           <strong>$field_offset</strong> does not exist, an error of level <info>E_WARNING</info> is also issued.

<comment>Return:</comment>
  <info>int</info>  Maximum length, when process is successful.
       
       <info>false</info> on failure.


id: cubrid_field_name
type: function
doc:
<comment>Description:</comment>
  Return the name of the specified field index
  
  This function returns the name of the specified field index on success or it returns FALSE on
  failure.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>        <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$field_offset</strong>  The numerical field offset. The <strong>$field_offset</strong> starts at 0. If
                           <strong>$field_offset</strong> does not exist, an error of level <info>E_WARNING</info> is also issued.

<comment>Return:</comment>
  <info>string</info>  Name of specified field index, on success.
          
          <info>false</info> on failure.


id: cubrid_field_seek
type: function
doc:
<comment>Description:</comment>
  Move the result set cursor to the specified field offset
  
  This function moves the result set cursor to the specified field offset. This offset is used by
  <strong>cubrid_fetch_field()</strong> if it doesn't include a field offset. It returns TRUE on success or FALSE on
  failure.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>        <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$field_offset</strong>  The numerical field offset. The <strong>$field_offset</strong> starts at 0. If
                           <strong>$field_offset</strong> does not exist, an error of level <info>E_WARNING</info> is also issued.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info> on success.
        
        <info>false</info> on failure.


id: cubrid_field_table
type: function
doc:
<comment>Description:</comment>
  Return the name of the table of the specified field
  
  This function returns the name of the table of the specified field. This is useful when using
  large select queries with JOINS.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>        <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$field_offset</strong>  The numerical field offset. The <strong>$field_offset</strong> starts at 0. If
                           <strong>$field_offset</strong> does not exist, an error of level <info>E_WARNING</info> is also issued.

<comment>Return:</comment>
  <info>string</info>  Name of the table of the specified field, on success.
          
          <info>false</info> when invalid field_offset value.
          
          -1 if SQL sentence is not SELECT.


id: cubrid_field_type
type: function
doc:
<comment>Description:</comment>
  Return the type of the column corresponding to the given field offset
  
  This function returns the type of the column corresponding to the given field offset. The returned
  field type could be one of the following: "int", "real", "string", etc.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>        <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$field_offset</strong>  The numerical field offset. The <strong>$field_offset</strong> starts at 0. If
                           <strong>$field_offset</strong> does not exist, an error of level <info>E_WARNING</info> is also issued.

<comment>Return:</comment>
  <info>string</info>  Type of the column, on success.
          
          <info>false</info> when invalid field_offset value.
          
          -1 if SQL sentence is not SELECT.


id: cubrid_free_result
type: function
doc:
<comment>Description:</comment>
  Free the memory occupied by the result data
  
  This function frees the memory occupied by the result data. It returns <info>true</info> on success or <info>false</info> on
  failure. Note that it can only frees the client fetch buffer now, and if you want free all memory,
  use function <strong>cubrid_close_request()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  This is the request identifier.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: cubrid_get
type: function
doc:
<comment>Description:</comment>
  Get a column using OID
  
  The <strong>cubrid_get()</strong> function is used to get the attribute of the instance of the given <strong>$oid</strong>.  You can
  get single attribute by using string data type for the <strong>$attr</strong> argument, or many attributes by using
  array data type for the <strong>$attr</strong> argument.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance that you want to read.
  <info>mixed</info>     <strong>$attr</strong>             Name of the attribute that you want to read.

<comment>Return:</comment>
  <info>mixed</info>  Content of the requested attribute, when process is successful; When <strong>$attr</strong> is set with
         string data type, the result is returned as a string; when <strong>$attr</strong> is set with array data
         type (0-based numerical array), then the result is returned in associative array. When
         <strong>$attr</strong> is omitted, then all attributes are received in array form.
         
         <info>false</info> when process is unsuccessful or result is NULL (If error occurs to distinguish empty
         string from NULL, then it prints the warning message. You can check the error by using
         <strong>cubrid_error_code()</strong>)

<comment>See Also:</comment>
   * <strong>cubrid_put()</strong>


id: cubrid_get_autocommit
type: function
doc:
<comment>Description:</comment>
  Get auto-commit mode of the connection
  
  The <strong>cubrid_get_autocommit()</strong> function is used to get the status of CUBRID database connection
  auto-commit mode.
  
  For CUBRID 8.4.0, auto-commit mode is disabled by default for transaction management.
  
  For CUBRID 8.4.1, auto-commit mode is enabled by default for transaction management.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.

<comment>Return:</comment>
  <info>bool</info>  <info>true</info>, when auto-commit is on.
        
        <info>false</info>, when auto-commit is off.
        
        <info>null</info> on error.

<comment>See Also:</comment>
   * <strong>cubrid_set_autocommit()</strong>
   * <strong>cubrid_commit()</strong>


id: cubrid_get_charset
type: function
doc:
<comment>Description:</comment>
  Return the current CUBRID connection charset
  
  This function returns the current CUBRID connection charset and is similar to the CUBRID MySQL
  compatible function <strong>cubrid_client_encoding()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection.

<comment>Return:</comment>
  <info>string</info>  A string that represents the CUBRID connection charset on success, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_client_encoding()</strong>


id: cubrid_get_class_name
type: function
doc:
<comment>Description:</comment>
  Get the class name using OID
  
  The <strong>cubrid_get_class_name()</strong> function is used to get the class name from <strong>$oid</strong>. It doesn't work when
  selecting data from the system tables, for example db_class.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance that you want to check the existence.

<comment>Return:</comment>
  <info>string</info>  Class name when process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_is_instance()</strong>
   * <strong>cubrid_drop()</strong>


id: cubrid_get_client_info
type: function
doc:
<comment>Description:</comment>
  Return the client library version
  
  This function returns a string that represents the client library version.

<comment>Return:</comment>
  <info>string</info>  A string that represents the client library version on success, 或者在失败时返回 <info>false</info>.


id: cubrid_get_db_parameter
type: function
doc:
<comment>Description:</comment>
  Returns the CUBRID database parameters
  
  This function returns the CUBRID database parameters, 或者在失败时返回 <info>false</info>.  It returns an
  associative array with the values for the following parameters:
  
  <info>PARAM_ISOLATION_LEVEL</info><info>PARAM_LOCK_TIMEOUT</info><info>PARAM_MAX_STRING_LENGTH</info><info>PARAM_AUTO_COMMIT</info>
  
  Database parametersParameterDescriptionPARAM_ISOLATION_LEVELThe transaction isolation
  level.LOCK_TIMEOUTCUBRID provides the lock timeout feature, which sets the waiting time (in
  seconds) for the lock until the transaction lock setting is allowed. The default value of the
  lock_timeout_in_secs parameter is -1, which means the application client will wait indefinitely
  until the transaction lock is allowed. PARAM_AUTO_COMMITIn CUBRID PHP, auto-commit mode is
  disabled by default for transaction management. It can be set by using <strong>cubrid_set_autocommit()</strong>.
  
  The following table shows the isolation levels from 1 to 6. It consists of table schema (row) and
  isolation level: Levels of Isolation Supported by CUBRIDNameDescriptionSERIALIZABLE (6)In this
  isolation level, problems concerning concurrency (e.g. dirty read, non-repeatable read, phantom
  read, etc.) do not occur.REPEATABLE READ CLASS with REPEATABLE READ INSTANCES (5)Another
  transaction T2 cannot update the schema of table A while transaction T1 is viewing table A.
  Transaction T1 may experience phantom read for the record R that was inserted by another
  transaction T2 when it is repeatedly retrieving a specific record.REPEATABLE READ CLASS with READ
  COMMITTED INSTANCES (or CURSOR STABILITY) (4)Another transaction T2 cannot update the schema of
  table A while transaction T1 is viewing table A. Transaction T1 may experience R read
  (non-repeatable read) that was updated and committed by another transaction T2 when it is
  repeatedly retrieving the record R.REPEATABLE READ CLASS with READ UNCOMMITTED INSTANCES
  (3)Default isolation level.  Another transaction T2 cannot update the schema of table A  while
  transaction T1 is viewing table A. Transaction T1 may experience R' read (dirty read) for the
  record that was updated but not committed by another transaction T2.READ COMMITTED CLASS with READ
  COMMITTED INSTANCES (2)Transaction T1 may experience A' read (non-repeatable read) for the table
  that was updated and committed by another transaction  T2 while it is viewing table A repeatedly.
  Transaction T1 may experience R' read (non-repeatable read) for the record that was updated and
  committed by another transaction T2 while it is retrieving the record R repeatedly.READ COMMITTED
  CLASS with READ UNCOMMITTED INSTANCES (1)Transaction T1 may experience A' read (non-repeatable
  read) for the table that was updated and committed by another transaction T2 while it is
  repeatedly viewing table A.  Transaction T1 may experience R' read (dirty read) for the record
  that was updated but not committed by another transaction T2.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection. If the connection identifier is not specified,
                              the last link opened by <strong>cubrid_connect()</strong> is assumed.

<comment>Return:</comment>
  <info>array</info>  An associative array with CUBRID database parameters; on success, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_set_db_parameter()</strong>
   * <strong>cubrid_get_autocommit()</strong>


id: cubrid_get_query_timeout
type: function
doc:
<comment>Description:</comment>
  Get the query timeout value of the request
  
  The <strong>cubrid_get_query_timeout()</strong> function is used to get the query timeout of the request.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  Request identifier.

<comment>Return:</comment>
  <info>int</info>  Returns the query timeout value in milliseconds of the current request on success, 或者在失败
       时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_set_query_timeout()</strong>


id: cubrid_get_server_info
type: function
doc:
<comment>Description:</comment>
  Return the CUBRID server version
  
  This function returns a string that represents the CUBRID server version.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection.

<comment>Return:</comment>
  <info>string</info>  A string that represents the CUBRID server version on success, 或者在失败时返回 <info>false</info>.


id: cubrid_insert_id
type: function
doc:
<comment>Description:</comment>
  Return the ID generated for the last updated AUTO_INCREMENT column
  
  The <strong>cubrid_insert_id()</strong> function retrieves the ID generated for the AUTO_INCREMENT column which is
  updated by the previous INSERT query. It returns 0 if the previous query does not generate new
  rows, or FALSE on failure.
  
  CUBRID supports AUTO_INCREMENT for more than one columns in a table. In most cases, there will be
  a single AUTO_INCREMENT column in a table. If there are multiple AUTO_INCREMENT columns, this
  function should not be used even if it will return a value.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The connection identifier previously obtained by a call to
                              <strong>cubrid_connect()</strong>.

<comment>Return:</comment>
  <info>string</info>  A string representing the ID generated for an AUTO_INCREMENT column by the previous query,
          on success.
          
          0, if the previous query does not generate new rows.
          
          <info>false</info> on failure.


id: cubrid_is_instance
type: function
doc:
<comment>Description:</comment>
  Check whether the instance pointed by OID exists
  
  The <strong>cubrid_is_instance()</strong> function is used to check whether the instance pointed by the given <strong>$oid</strong>
  exists or not.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance that you want to check the existence.

<comment>Return:</comment>
  <info>int</info>  1, if such instance exists;
       
       0, if such instance does not exist;
       
       -1, in case of error

<comment>See Also:</comment>
   * <strong>cubrid_drop()</strong>
   * <strong>cubrid_get_class_name()</strong>


id: cubrid_list_dbs
type: function
doc:
<comment>Description:</comment>
  Return an array with the list of all existing CUBRID databases
  
  This function returns an array with the list of all existing Cubrid databases.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection.

<comment>Return:</comment>
  <info>array</info>  An numeric array with all existing Cubrid databases; on success.
         
         <info>false</info> on failure.


id: cubrid_load_from_glo
type: function
doc:
<comment>Description:</comment>
  Read data from a GLO instance and save it in a file
  
  The <strong>cubrid_load_from_glo()</strong> function is used to read a data from a glo instance, and saves it in a
  designated file.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              Oid of the glo instance that you want to read the data from.
  <info>string</info>    <strong>$file_name</strong>        Name of the file where you want to save the data in.

<comment>Return:</comment>
  <info>int</info>  <info>true</info>, when process is successful.
       
       <info>false</info>, when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_new_glo()</strong>
   * <strong>cubrid_save_to_glo()</strong>
   * <strong>cubrid_send_glo()</strong>


id: cubrid_lob2_bind
type: function
doc:
<comment>Description:</comment>
  Bind a lob object or a string as a lob object to a prepared statement as parameters
  
  The <strong>cubrid_lob2_bind()</strong> function is used to bind BLOB/CLOB datas to a corresponding question mark
  placeholder in the SQL statement that was passed  to <strong>cubrid_prepare()</strong>. If <strong>$bind_value_type</strong>  is not
  given, string will be "BLOB" as the default. But if you use <strong>cubrid_lob2_new()</strong> before,
  <strong>$bind_value_type</strong> will be consistent with <strong>$type</strong> in <strong>cubrid_lob2_new()</strong> as the default.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>   Request identifier as a result of <strong>cubrid_prepare()</strong>.
  <info>int</info>       <strong>$bind_index</strong>       Location of binding parameters. It starts with 1.
  <info>mixed</info>     <strong>$bind_value</strong>       Actual value for binding.
  <info>string</info>    <strong>$bind_value_type</strong>  It must be "BLOB" or "CLOB" and it won't be case-sensitive. If it not
                              be given, the default value is "BLOB".

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob2_new()</strong>
   * <strong>cubrid_lob2_close()</strong>


id: cubrid_lob2_close
type: function
doc:
<comment>Description:</comment>
  Close LOB object
  
  The <strong>cubrid_lob2_close()</strong> function is used to close LOB object returned from <strong>cubrid_lob2_new()</strong> or
  got from the result set.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob2_new()</strong>


id: cubrid_lob2_export
type: function
doc:
<comment>Description:</comment>
  Export the lob object to a file
  
  The <strong>cubrid_lob2_export()</strong> function is used to save the  contents of BLOB/CLOB data to a file. To
  use this function, you must use <strong>cubrid_lob2_new()</strong> or fetch a lob object from CUBRID  database
  first. If the file already exists, the operation will fail.  This function will not influence the
  cursor position of the lob object.  It operates the entire lob object.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.
  <info></info>          <strong>$filename</strong>        File name you want to store BLOB/CLOB data. It also supports the path
                             of the file.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob2_new()</strong>
   * <strong>cubrid_lob2_close()</strong>
   * <strong>cubrid_lob2_import()</strong>
   * <strong>cubrid_lob2_bind()</strong>


id: cubrid_lob2_import
type: function
doc:
<comment>Description:</comment>
  Import BLOB/CLOB data from a file
  
  The <strong>cubrid_lob2_import()</strong> function is used to save the contents of BLOB/CLOB data from a file. To
  use this function, you must use <strong>cubrid_lob2_new()</strong> or fetch a lob object from CUBRID database
  first. If the file already exists, the operation will fail.  This function will not influence the
  cursor position of the lob object.  It operates the entire lob object.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.
  <info></info>          <strong>$filename</strong>        File name you want to import BLOB/CLOB data. It also supports the path
                             of the file.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob2_new()</strong>
   * <strong>cubrid_lob2_close()</strong>
   * <strong>cubrid_lob2_export()</strong>
   * <strong>cubrid_lob2_bind()</strong>


id: cubrid_lob2_new
type: function
doc:
<comment>Description:</comment>
  Create a lob object
  
  The <strong>cubrid_lob2_new()</strong> function is used to create a lob object (both BLOB and CLOB).  This function
  should be used before you bind a lob object.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier. If the connection identifier is not specified,
                              the last connection opened by <strong>cubrid_connect()</strong> or
                              <strong>cubrid_connect_with_url()</strong> is assumed.
  <info>string</info>    <strong>$type</strong>             It may be "BLOB" or "CLOB", it won't be case-sensitive. The default
                              value is "BLOB".

<comment>Return:</comment>
  <info>resource</info>  Lob identifier when it is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_lob2_close()</strong>


id: cubrid_lob2_read
type: function
doc:
<comment>Description:</comment>
  Read from BLOB/CLOB data
  
  The <strong>cubrid_lob2_read()</strong> function reads <strong>$len</strong> bytes from the  LOB data and returns the bytes read.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.
  <info>int</info>       <strong>$len</strong>             Length from buffer you want to read from the lob data.

<comment>Return:</comment>
  <info>string</info>  Returns the contents as a string, <info>false</info> when there is no more data, or <info>null</info> on failure.

<comment>See Also:</comment>
   * <strong>cubrid_lob2_write()</strong>
   * <strong>cubrid_lob2_seek()</strong>
   * <strong>cubrid_lob2_seek64()</strong>
   * <strong>cubrid_lob2_tell()</strong>
   * <strong>cubrid_lob2_tell64()</strong>
   * <strong>cubrid_lob2_size()</strong>
   * <strong>cubrid_lob2_size64()</strong>


id: cubrid_lob2_seek
type: function
doc:
<comment>Description:</comment>
  Move the cursor of a lob object
  
  The <strong>cubrid_lob2_seek()</strong> function is used to move the cursor position of a lob object by the value
  set in the <strong>$offset</strong> argument, to the direction set in the <strong>$origin</strong> argument.
  
  To set the <strong>$origin</strong> argument, you can use <info>CUBRID_CURSOR_FIRST</info> to set the cursor position moving
  forward <strong>$offset</strong> units from the first beginning. In this case, <strong>$offset</strong> must be a positive value.
  
  If you use <info>CUBRID_CURSOR_CURRENT</info> for <strong>$origin</strong>, you can move  forward or backward. and <strong>$offset</strong> can
  be positive or negative.
  
  If you use <info>CUBRID_CURSOR_LAST</info> for <strong>$origin</strong>, you can move  backward <strong>$offset</strong> units from the end of
  LOB object and <strong>$offset</strong> only can be positive.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.
  <info>int</info>       <strong>$offset</strong>          Number of units you want to move the cursor.
  <info>int</info>       <strong>$origin</strong>          This parameter can be the following values:
                             
                             CUBRID_CURSOR_FIRST: move forward from the first beginning.
                             
                             CUBRID_CURSOR_CURRENT: move forward or backward from the current
                             position.
                             
                             CUBRID_CURSOR_LAST: move backward at the end of LOB object.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob2_read()</strong>
   * <strong>cubrid_lob2_write()</strong>
   * <strong>cubrid_lob2_seek64()</strong>
   * <strong>cubrid_lob2_tell()</strong>
   * <strong>cubrid_lob2_tell64()</strong>
   * <strong>cubrid_lob2_size()</strong>
   * <strong>cubrid_lob2_size64()</strong>


id: cubrid_lob2_seek64
type: function
doc:
<comment>Description:</comment>
  Move the cursor of a lob object
  
  The <strong>cubrid_lob2_seek64()</strong> function is used to move the cursor position of a lob object by the value
  set in the <strong>$offset</strong>  argument, to the direction set in the <strong>$origin</strong> argument.  If the <strong>$offset</strong> you
  want to move is larger than an integer  data can be stored, you can use this function.
  
  To set the <strong>$origin</strong> argument, you can use <info>CUBRID_CURSOR_FIRST</info> to set the cursor position moving
  forward <strong>$offset</strong> units from the first beginning. In this case, <strong>$offset</strong> must be a positive value.
  
  If you use <info>CUBRID_CURSOR_CURRENT</info> for <strong>$origin</strong>, you can move forward or backward. and <strong>$offset</strong> can be
  positive or negative.
  
  If you use <info>CUBRID_CURSOR_LAST</info> for <strong>$origin</strong>, you can move backward <strong>$offset</strong> units from the end of LOB
  object and <strong>$offset</strong> only can be positive.
  
  If you use this function to move the cursor position of the lob object, you should pass <strong>$offset</strong> as
  a string.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.
  <info>string</info>    <strong>$offset</strong>          Number of units you want to move the cursor.
  <info>int</info>       <strong>$origin</strong>          This parameter can be the following values:
                             
                             CUBRID_CURSOR_FIRST: move forward from the first beginning.
                             
                             CUBRID_CURSOR_CURRENT: move forward or backward from the current
                             position.
                             
                             CUBRID_CURSOR_LAST: move backward at the end of LOB object.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob2_read()</strong>
   * <strong>cubrid_lob2_write()</strong>
   * <strong>cubrid_lob2_seek()</strong>
   * <strong>cubrid_lob2_tell()</strong>
   * <strong>cubrid_lob2_tell64()</strong>
   * <strong>cubrid_lob2_size()</strong>
   * <strong>cubrid_lob2_size64()</strong>


id: cubrid_lob2_size
type: function
doc:
<comment>Description:</comment>
  Get a lob object's size
  
  The <strong>cubrid_lob2_size()</strong> function is used to get the size of a lob object.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.

<comment>Return:</comment>
  <info>int</info>  It will return the size of the LOB object when it processes successfully, 或者在失败时返回
       <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_lob2_read()</strong>
   * <strong>cubrid_lob2_write()</strong>
   * <strong>cubrid_lob2_seek()</strong>
   * <strong>cubrid_lob2_seek64()</strong>
   * <strong>cubrid_lob2_tell()</strong>
   * <strong>cubrid_lob2_tell64()</strong>
   * <strong>cubrid_lob2_size64()</strong>


id: cubrid_lob2_size64
type: function
doc:
<comment>Description:</comment>
  Get a lob object's size
  
  The <strong>cubrid_lob2_size64()</strong> function is used to get the size of a lob object.  If the size of a lob
  object is larger than an integer data can be stored, you can use this function and it will return
  the size as a string.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.

<comment>Return:</comment>
  <info>string</info>  It will return the size of the LOB object as a string when it processes successfully, 或者
          在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_lob2_read()</strong>
   * <strong>cubrid_lob2_write()</strong>
   * <strong>cubrid_lob2_seek()</strong>
   * <strong>cubrid_lob2_seek64()</strong>
   * <strong>cubrid_lob2_tell()</strong>
   * <strong>cubrid_lob2_tell64()</strong>
   * <strong>cubrid_lob2_size()</strong>


id: cubrid_lob2_tell
type: function
doc:
<comment>Description:</comment>
  Tell the cursor position of the LOB object
  
  The <strong>cubrid_lob2_tell()</strong> function is used to tell the cursor position of the LOB object.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.

<comment>Return:</comment>
  <info>int</info>  It will return the cursor position on the LOB object when it processes successfully, 或者在失
       败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_lob2_read()</strong>
   * <strong>cubrid_lob2_write()</strong>
   * <strong>cubrid_lob2_seek()</strong>
   * <strong>cubrid_lob2_seek64()</strong>
   * <strong>cubrid_lob2_tell64()</strong>
   * <strong>cubrid_lob2_size()</strong>
   * <strong>cubrid_lob2_size64()</strong>


id: cubrid_lob2_tell64
type: function
doc:
<comment>Description:</comment>
  Tell the cursor position of the LOB object
  
  The <strong>cubrid_lob2_tell64()</strong> function is used to tell the  cursor position of the LOB object. If the
  size of a lob object is larger than an integer data can be stored, you can use this function and
  it will return the position information as a string.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.

<comment>Return:</comment>
  <info>string</info>  It will return the cursor position on the LOB object as a string when it processes
          successfully, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_lob2_read()</strong>
   * <strong>cubrid_lob2_write()</strong>
   * <strong>cubrid_lob2_seek()</strong>
   * <strong>cubrid_lob2_seek64()</strong>
   * <strong>cubrid_lob2_tell()</strong>
   * <strong>cubrid_lob2_size()</strong>
   * <strong>cubrid_lob2_size64()</strong>


id: cubrid_lob2_write
type: function
doc:
<comment>Description:</comment>
  Write to a lob object
  
  The <strong>cubrid_lob2_write()</strong> function reads as much as data from <strong>$buf</strong> and stores it to the LOB object.
  Note that this function can only append characters now.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  Lob identifier as a result of <strong>cubrid_lob2_new()</strong> or get from the result
                             set.
  <info>string</info>    <strong>$buf</strong>             Data that need to be written to the lob object.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob2_read()</strong>
   * <strong>cubrid_lob2_seek()</strong>
   * <strong>cubrid_lob2_seek64()</strong>
   * <strong>cubrid_lob2_tell()</strong>
   * <strong>cubrid_lob2_tell64()</strong>
   * <strong>cubrid_lob2_size()</strong>
   * <strong>cubrid_lob2_size64()</strong>


id: cubrid_lob_close
type: function
doc:
<comment>Description:</comment>
  Close BLOB/CLOB data
  
  <strong>cubrid_lob_close()</strong> is used to close all BLOB/CLOB returned from <strong>cubrid_lob_get()</strong>.

<comment>Param:</comment>
  <info>array</info>  <strong>$lob_identifier_array</strong>  LOB identifier array returned from <strong>cubrid_lob_get()</strong>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob_get()</strong>
   * <strong>cubrid_lob_size()</strong>
   * <strong>cubrid_lob_export()</strong>
   * <strong>cubrid_lob_send()</strong>


id: cubrid_lob_export
type: function
doc:
<comment>Description:</comment>
  Export BLOB/CLOB data to file
  
  <strong>cubrid_lob_export()</strong> is used to get BLOB/CLOB data from CUBRID database, and saves its contents to
  a file. To use this function, you must use <strong>cubrid_lob_get()</strong> first to get BLOB/CLOB info from
  CUBRID.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>resource</info>  <strong>$lob_identifier</strong>   LOB identifier.
  <info>string</info>    <strong>$path_name</strong>        Path name of the file.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob_get()</strong>
   * <strong>cubrid_lob_close()</strong>
   * <strong>cubrid_lob_size()</strong>
   * <strong>cubrid_lob_send()</strong>


id: cubrid_lob_get
type: function
doc:
<comment>Description:</comment>
  Get BLOB/CLOB data
  
  <strong>cubrid_lob_get()</strong> is used to get BLOB/CLOB meta info from CUBRID database,  CUBRID gets BLOB/CLOB
  by executing the SQL statement, and returns all LOBs as a resource array.  Be sure that the SQL
  retrieves only one column and its data type is BLOB or CLOB.
  
  Remember to use <strong>cubrid_lob_close()</strong> to release the LOBs if you don't need it any more.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$sql</strong>              SQL statement to be executed.

<comment>Return:</comment>
  <info>array</info>  Return an array of LOB resources, when process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_lob_close()</strong>
   * <strong>cubrid_lob_size()</strong>
   * <strong>cubrid_lob_export()</strong>
   * <strong>cubrid_lob_send()</strong>


id: cubrid_lob_send
type: function
doc:
<comment>Description:</comment>
  Read BLOB/CLOB data and send straight to browser
  
  <strong>cubrid_lob_send()</strong> reads BLOB/CLOB data and passes it straight through to the browser.   To use
  this function, you must use <strong>cubrid_lob_get()</strong> first to get BLOB/CLOB info from CUBRID.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>resource</info>  <strong>$lob_identifier</strong>   LOB identifier.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lob_get()</strong>
   * <strong>cubrid_lob_close()</strong>
   * <strong>cubrid_lob_size()</strong>
   * <strong>cubrid_lob_export()</strong>


id: cubrid_lob_size
type: function
doc:
<comment>Description:</comment>
  Get BLOB/CLOB data size
  
  <strong>cubrid_lob_size()</strong> is used to get BLOB/CLOB data size.

<comment>Param:</comment>
  <info>resource</info>  <strong>$lob_identifier</strong>  LOB identifier.

<comment>Return:</comment>
  <info>string</info>  A string representing LOB data size, when process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_lob_get()</strong>
   * <strong>cubrid_lob_close()</strong>
   * <strong>cubrid_lob_export()</strong>
   * <strong>cubrid_lob_send()</strong>


id: cubrid_lock_read
type: function
doc:
<comment>Description:</comment>
  Set a read lock on the given OID
  
  The <strong>cubrid_lock_read()</strong> function is used to put read lock on the instance pointed by given <strong>$oid</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance that you want to put read lock on.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lock_write()</strong>


id: cubrid_lock_write
type: function
doc:
<comment>Description:</comment>
  Set a write lock on the given OID
  
  The <strong>cubrid_lock_write()</strong> function is used to put write lock on the instance pointed by the given
  <strong>$oid</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance that you want to put write lock on.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_lock_read()</strong>


id: cubrid_move_cursor
type: function
doc:
<comment>Description:</comment>
  Move the cursor in the result
  
  The <strong>cubrid_move_cursor()</strong> function is used to move the current cursor location of <strong>$req_identifier</strong>
  by the value set in the <strong>$offset</strong> argument, to the direction set in the <strong>$origin</strong> argument. To set the
  <strong>$origin</strong> argument, you can use <info>CUBRID_CURSOR_FIRST</info> for the first part of the result,
  <info>CUBRID_CURSOR_CURRENT</info> for the current location of the result, or <info>CUBRID_CURSOR_LAST</info> for the last
  part of the result. If <strong>$origin</strong> argument is not explicitly designated, then the function uses
  <info>CUBRID_CURSOR_CURRENT</info> as its default value.
  
  If the value of cursor movement range goes over the valid limit, then the cursor moves to the next
  location after the valid range for the cursor. For example, if you move 20 units in the result
  with the size of 10, then the cursor will move to 11th place and return <info>CUBRID_NO_MORE_DATA</info>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  Request identifier.
  <info>int</info>       <strong>$offset</strong>          Number of units you want to move the cursor.
  <info>int</info>       <strong>$origin</strong>          Location where you want to move the cursor from <info>CUBRID_CURSOR_FIRST</info>,
                             <info>CUBRID_CURSOR_CURRENT</info>, <info>CUBRID_CURSOR_LAST</info>.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>


id: cubrid_new_glo
type: function
doc:
<comment>Description:</comment>
  Create a glo instance
  
  The <strong>cubrid_new_glo()</strong> function is used to create a glo instance in the requested class (glo class).
  The glo created is a LO type, and is stored in the <strong>$file_name</strong> file.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$class_name</strong>       Name of the class that you want to create a glo in.
  <info>string</info>    <strong>$file_name</strong>        The file name that you want to save in the newly created glo.

<comment>Return:</comment>
  <info>string</info>  Oid of the instance created, when process is successful.
          
          <info>false</info>, when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_save_to_glo()</strong>
   * <strong>cubrid_load_from_glo()</strong>
   * <strong>cubrid_send_glo()</strong>


id: cubrid_next_result
type: function
doc:
<comment>Description:</comment>
  Get result of next query when executing multiple SQL statements
  
  The <strong>cubrid_next_result()</strong> function is used to get results of next query if multiple SQL statements
  are executed and <info>CUBRID_EXEC_QUERY_ALL</info> flag is set upon <strong>cubrid_execute()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>


id: cubrid_num_cols
type: function
doc:
<comment>Description:</comment>
  Return the number of columns in the result set
  
  The <strong>cubrid_num_cols()</strong> function is used to get the number of columns from the query result. It can
  only be used when the query executed is a <return>SELECT</return> statement.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  Result.

<comment>Return:</comment>
  <info>int</info>  Number of columns, when process is successful.
       
       <info>false</info>, if SQL statement is not SELECT.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_num_rows()</strong>


id: cubrid_num_fields
type: function
doc:
<comment>Description:</comment>
  Return the number of columns in the result set
  
  This function returns the number of columns in the result set, on success, or it returns FALSE on
  failure.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>, <strong>cubrid_query()</strong> and
                     <strong>cubrid_prepare()</strong>

<comment>Return:</comment>
  <info>int</info>  Number of columns, on success.
       
       -1 if SQL sentence is not SELECT.
       
       <info>false</info> when process is unsuccessful.


id: cubrid_num_rows
type: function
doc:
<comment>Description:</comment>
  Get the number of rows in the result set
  
  The <strong>cubrid_num_rows()</strong> function is used to get the  number of rows from the query result. It can be
  used for <return>SELECT</return> statements. For <return>INSERT</return>, <return>UPDATE</return>, or <return>DELETE</return> queries, use the <strong>cubrid_affected_rows()</strong>
  function.
  
  Note: The <strong>cubrid_num_rows()</strong> function can only be used for synchronous query; it returns 0 when it
  is used for asynchronous query.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>, <strong>cubrid_query()</strong> and
                     <strong>cubrid_prepare()</strong>

<comment>Return:</comment>
  <info>int</info>  Number of rows, when process is successful.
       
       0 when the query was done in async mode.
       
       -1, if SQL statement is not SELECT.
       
       <info>false</info> when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_num_cols()</strong>
   * <strong>cubrid_affected_rows()</strong>


id: cubrid_pconnect
type: function
doc:
<comment>Description:</comment>
  Open a persistent connection to a CUBRID server
  
  Establishes a persistent connection to a CUBRID server.
  
  <strong>cubrid_pconnect()</strong> acts very much like <strong>cubrid_connect()</strong> with two major differences.
  
  First, when connecting, the function would first try to find a (persistent) link that's already
  open with the same host, port, dbname and userid. If one is found, an identifier for it will be
  returned instead of opening a new connection.
  
  Second, the connection to the SQL server will not be closed when the execution of the script ends.
  Instead, the link will remain open for future use (<strong>cubrid_close()</strong> or <strong>cubrid_disconnect()</strong> will not
  close links established by <strong>cubrid_pconnect()</strong>).
  
  This type of link is therefore called 'persistent'.

<comment>Param:</comment>
  <info>string</info>  <strong>$host</strong>    Host name or IP address of CUBRID CAS server.
  <info>int</info>     <strong>$port</strong>    Port number of CUBRID CAS server (BROKER_PORT configured in
                   $CUBRID/conf/cubrid_broker.conf).
  <info>string</info>  <strong>$dbname</strong>  Name of database.
  <info>string</info>  <strong>$userid</strong>  User name for the database.
  <info>string</info>  <strong>$passwd</strong>  User password.

<comment>Return:</comment>
  <info>resource</info>  Connection identifier, when process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_connect()</strong>
   * <strong>cubrid_connect_with_url()</strong>
   * <strong>cubrid_pconnect_with_url()</strong>
   * <strong>cubrid_disconnect()</strong>
   * <strong>cubrid_close()</strong>


id: cubrid_pconnect_with_url
type: function
doc:
<comment>Description:</comment>
  Open a persistent connection to CUBRID server
  
  Establishes a persistent connection to a CUBRID server.
  
  <strong>cubrid_pconnect_with_url()</strong> acts very much like <strong>cubrid_connect_with_url()</strong> with two major
  differences.
  
  First, when connecting, the function would first try to find a (persistent) link that's already
  open with the same host, port, dbname and userid. If one is found, an identifier for it will be
  returned instead of opening a new connection.
  
  Second, the connection to the SQL server will not be closed when the execution of the script ends.
  Instead, the link will remain open for future use (<strong>cubrid_close()</strong> or <strong>cubrid_disconnect()</strong> will not
  close links established by <strong>cubrid_pconnect_with_url()</strong>).
  
  This type of link is therefore called 'persistent'.
  
  \<url&gt; ::= CUBRID:\<host&gt;:\<db_name&gt;:\<db_user&gt;:\<db_password&gt;:[?\<properties&gt;]
  
  \<properties&gt; ::= \<property&gt; [&\<property&gt;]
  
  \<properties&gt; ::= alhosts=\<alternative_hosts&gt;[ &rctime=\<time&gt;]
  
  \<properties&gt; ::= login_timeout=\<milli_sec&gt;
  
  \<properties&gt; ::= query_timeout=\<milli_sec&gt;
  
  \<properties&gt; ::= disconnect_on_query_timeout=true|false
  
  \<alternative_hosts&gt; ::= \<standby_broker1_host&gt;:\<port&gt; [,\<standby_broker2_host&gt;:\<port&gt;]
  
  \<host&gt; := HOSTNAME | IP_ADDR
  
  \<time&gt; := SECOND
  
  \<milli_sec&gt; := MILLI SECOND
  
  host : A host name or IP address of the master databasedb_name : A name of the databasedb_user : A
  name of the database userdb_password : A database user password alhosts : Specifies the broker
  information of the standby server, which is used for failover when it is impossible to connect to
  the active server.  You can specify multiple brokers for failover, and the connection to the
  brokers is attempted in the order listed in alhosts rctime : An interval between the attempts to
  connect to the active broker in which failure occurred. After a failure occurs, the system
  connects to the  broker specified by althosts (failover), terminates the transaction, and then
  attempts to connect to the active broker of the master database at every rctime.  The default
  value is 600 seconds. login_timeout : Timeout value (unit: msec.) for database login. The default
  value is 0, which means infinite postponement.  query_timeout : Timeout value (unit: msec.) for
  query request. Upon timeout, a message to cancel requesting a query transferred to server is sent.
  The return  value can depend on the disconnect_on_query_timeout configuration; even though the
  message to cancel a request is sent to server, that request may succeed.
  disconnect_on_query_timeout : Configures a value whether to immediately return an error of
  function being executed upon timeout. The default value is false.
  
  <return>?</return> and <return>:</return> that are used as identifiers in PHP connection URL can't be included in the password. The
  following is an example of a password that is invalid to use as connection URL because it contains
  "<return>?:</return>".
  
  $url = "CUBRID:localhost:33000:tdb:dba:12?:?login_timeout=100";
  
  Passwords that contain <return>?</return> or <return>:</return> may be passed as a separate parameter.
  
  $url = "CUBRID:localhost:33000:tbd:::?login_timeout=100";
  
  $conn = cubrid_pconnect_with_url ($url, "dba", "12?");
  
  If user or password is empty,you can't delete "<return>:</return>",the following is an example.
  
  $url = "CUBRID:localhost:33000:demodb:::";

<comment>Param:</comment>
  <info>string</info>  <strong>$conn_url</strong>  A character string that contains server connection information.
  <info>string</info>  <strong>$userid</strong>    User name for the database.
  <info>string</info>  <strong>$passwd</strong>    User password.

<comment>Return:</comment>
  <info>resource</info>  Connection identifier, when process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_connect()</strong>
   * <strong>cubrid_connect_with_url()</strong>
   * <strong>cubrid_pconnect()</strong>
   * <strong>cubrid_disconnect()</strong>
   * <strong>cubrid_close()</strong>


id: cubrid_ping
type: function
doc:
<comment>Description:</comment>
  Ping a server connection or reconnect if there is no connection
  
  Checks whether or not the connection to the server is working.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection identifier. If the connection identifier is not
                              specified, the last connection opened by <strong>cubrid_connect()</strong> is assumed.

<comment>Return:</comment>
  <info>bool</info>  Returns <info>true</info> if the connection to the server CUBRID server is working, otherwise <info>false</info>.


id: cubrid_prepare
type: function
doc:
<comment>Description:</comment>
  Prepare a SQL statement for execution
  
  The <strong>cubrid_prepare()</strong> function is a sort of API which represents SQL statements  compiled
  previously to a given connection handle. This pre-compiled SQL statement will be included  in the
  <strong>cubrid_prepare()</strong>.
  
  Accordingly, you can use this statement effectively to execute several times repeatedly or to
  process long data. Only a single statement can be used and a parameter may put a question mark (?)
  to appropriate area in the SQL statement. Add a parameter when you bind a value in the VALUES
  clause of INSERT statement or in the WHERE clause. Note that it is allowed to bind a value to a
  MARK(?) by using the <strong>cubrid_bind()</strong> function only.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$prepare_stmt</strong>     Prepare query.
  <info>int</info>       <strong>$option</strong>           OID return option <info>CUBRID_INCLUDE_OID</info>.

<comment>Return:</comment>
  <info>resource</info>  Request identifier, if process is successful, 或者在失败时返回 <info>false</info>.

<comment>See Also:</comment>
   * <strong>cubrid_execute()</strong>
   * <strong>cubrid_bind()</strong>


id: cubrid_put
type: function
doc:
<comment>Description:</comment>
  Update a column using OID
  
  The <strong>cubrid_put()</strong> function is used to update an attribute of the instance of the given <strong>$oid</strong>.
  
  You can update single attribute by using string data type to set <strong>$attr</strong>.  In such case, you can use
  integer, floating point or string type data for the <strong>$value</strong> argument. To update multiple number of
  attributes, you can disregard the <strong>$attr</strong> argument, and set <strong>$value</strong> argument with associative array
  data type.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance that you want to update.
  <info>string</info>    <strong>$attr</strong>             Name of the attribute that you want to update.
  <info>mixed</info>     <strong>$value</strong>            New value that you want to assign to the attribute.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_get()</strong>
   * <strong>cubrid_set_add()</strong>
   * <strong>cubrid_set_drop()</strong>
   * <strong>cubrid_seq_insert()</strong>
   * <strong>cubrid_seq_drop()</strong>
   * <strong>cubrid_seq_put()</strong>


id: cubrid_query
type: function
doc:
<comment>Description:</comment>
  Send a CUBRID query
  
  <strong>cubrid_query()</strong> sends a unique query (multiple queries are not supported) to the  currently active
  database on the server that's associated with the specified <strong>$conn_identifier</strong>.

<comment>Param:</comment>
  <info>string</info>    <strong>$query</strong>            An SQL query
                              
                              Data inside the query should be properly escaped.
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection. If the connection identifier is not specified,
                              the last connection opened by <strong>cubrid_connect()</strong> is assumed.

<comment>Return:</comment>
  <info>resource</info>  For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset,
            <strong>cubrid_query()</strong> returns a <info>resource</info> on success, or <info>false</info> on error.
            
            For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, <strong>cubrid_query()</strong>
            returns <info>true</info> on success or <info>false</info> on error.
            
            The returned result resource should be passed to <strong>cubrid_fetch_array()</strong>, and other
            functions for dealing with result tables, to access the returned data.
            
            Use <strong>cubrid_num_rows()</strong> to find out how many rows were returned for a SELECT statement or
            <strong>cubrid_affected_rows()</strong> to find out how many rows were affected by a DELETE, INSERT,
            REPLACE, or UPDATE statement.
            
            <strong>cubrid_query()</strong> will also fail and return <info>false</info> if the user does not have permission to
            access the table(s) referenced by the query.

<comment>See Also:</comment>
   * <strong>cubrid_connect()</strong>
   * <strong>cubrid_error()</strong>
   * <strong>cubrid_real_escape_string()</strong>
   * <strong>cubrid_result()</strong>
   * <strong>cubrid_fetch_assoc()</strong>
   * <strong>cubrid_unbuffered_query()</strong>


id: cubrid_real_escape_string
type: function
doc:
<comment>Description:</comment>
  Escape special characters in a string for use in an SQL statement
  
  This function returns the escaped string version of the given string. It will escape the following
  characters: <info>'</info>.
   In general, single quotations are used to enclose character string. Double quotations may be used
  as well depending on the value of ansi_quotes, which is a parameter related to SQL statement. If
  the ansi_quotes value is set to no, character string enclosed by double quotations is handled as
  character string, not as an identifier. The default value is yes.
   If you want to include a single quote as part of a character string, enter two single quotes in a
  row.

<comment>Param:</comment>
  <info>string</info>    <strong>$unescaped_string</strong>  The string that is to be escaped.
  <info>resource</info>  <strong>$conn_identifier</strong>   The CUBRID connection. If the connection identifier is not specified,
                               the last connection opened by <strong>cubrid_connect()</strong> is assumed.

<comment>Return:</comment>
  <info>string</info>  Escaped string version of the given string, on success.
          
          <info>false</info> on failure.


id: cubrid_result
type: function
doc:
<comment>Description:</comment>
  Return the value of a specific field in a specific row
  
  This function returns the value of a specific field in a specific row from a result set.

<comment>Param:</comment>
  <info>resource</info>  <strong>$result</strong>  <strong>$result</strong> comes from a call to <strong>cubrid_execute()</strong>
  <info>int</info>       <strong>$row</strong>     The row number from the result that is being retrieved. Row numbers start at 0.
  <info>mixed</info>     <strong>$field</strong>   The name or offset of the <strong>$field</strong> being retrieved. It can be the field's offset,
                     the field's name, or the field's table dot field name (tablename.fieldname). If
                     the column name has been aliased ('select foo as bar from...'), use the alias
                     instead of the column name. If undefined, the first field is retrieved.

<comment>Return:</comment>
  <info>string</info>  Value of a specific field, on success (NULL if value if null).
          
          <info>false</info> on failure.


id: cubrid_rollback
type: function
doc:
<comment>Description:</comment>
  Roll back a transaction
  
  The <strong>cubrid_rollback()</strong> function executes rollback on the transaction pointed by <strong>$conn_identifier</strong>,
  currently in progress.
  
  Connection to server is closed after calling <strong>cubrid_rollback()</strong>. Connection handle, however, is
  still valid.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_commit()</strong>
   * <strong>cubrid_disconnect()</strong>


id: cubrid_save_to_glo
type: function
doc:
<comment>Description:</comment>
  Save requested file in a GLO instance
  
  The <strong>cubrid_save_to_glo()</strong> function is used to save requested file in a glo instance.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              Oid of the glo instance that you want to save a file in.
  <info>string</info>    <strong>$file_name</strong>        The name of the file that you want to save.

<comment>Return:</comment>
  <info>int</info>  <info>true</info>, when process is successful.
       
       <info>false</info>, when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_new_glo()</strong>
   * <strong>cubrid_load_from_glo()</strong>
   * <strong>cubrid_send_glo()</strong>


id: cubrid_schema
type: function
doc:
<comment>Description:</comment>
  Get the requested schema information
  
  The <strong>cubrid_schema()</strong> function is used to get the requested schema information from database. To get
  information about specific class, set the <strong>$class_name</strong>, to get information about specific attribute
  (can be used only with <info>CUBRID_SCH_ATTR_PRIVILEGE</info>), set the <strong>$attr_name</strong>.
  
  The result of the <strong>cubrid_schema()</strong> function is returned as a two-dimensional array (column
  (associative array) * row (numeric array)). The following tables shows types of schema and the
  column structure of the result array to be returned based on the schema type.
  
  Result Composition of Each TypeSchemaColumn NumberColumn
  NameValueCUBRID_SCH_CLASS1NAME2TYPE0:system class 1:vclass
  2:classCUBRID_SCH_VCLASS1NAME2TYPE1:vclassCUBRID_SCH_QUERY_SPEC1QUERY_SPECCUBRID_SCH_ATTRIBUTE /
  CUBRID_SCH_CLASS_ATTRIBUTE1ATTR_NAME2DOMAIN3SCALE4PRECISION5INDEXED1:indexed6NOT NULL1:not
  null7SHARED1:shared8UNIQUE1:unique9DEFAULT10ATTR_ORDERbase:111CLASS_NAME12SOURCE_CLASS13IS_KEY1:keyCUBRID_SCH_METHOD
  /
  CUBRID_SCH_CLASS_METHOD1NAME2RET_DOMAIN3ARG_DOMAINCUBRID_SCH_METHOD_FILE1METHOD_FILECUBRID_SCH_SUPERCLASS
  / CUBRID_SCH_DIRECT_SUPER_CLASS / CUBRID_SCH_SUBCLASS1CLASS_NAME2TYPE0:system class 1:vclass
  2:classCUBRID_SCH_CONSTRAINT1TYPE0:unique 1:index 2:reverse unique 3:reverse
  index2NAME3ATTR_NAME4NUM_PAGES5NUM_KEYS6PRIMARY_KEY1:primary
  key7KEY_ORDERbase:1CUBRID_SCH_TRIGGER1NAME2STATUS3EVENT4TARGET_CLASS5TARGET_ATTR6ACTION_TIME7ACTION8PRIORITY9CONDITION_TIME10CONDITIONCUBRID_SCH_CLASS_PRIVILEGE
  / CUBRID_SCH_ATTR_PRIVILEGE1CLASS_NAME /
  ATTR_NAME2PRIVILEGE3GRANTABLECUBRID_SCH_PRIMARY_KEY1CLASS_NAME2ATTR_NAME3KEY_SEQbase:14KEY_NAMECUBRID_SCH_IMPORTED_KEYS
  / CUBRID_SCH_EXPORTED_KEYS /
  CUBRID_SCH_CROSS_REFERENCE1PKTABLE_NAME2PKCOLUMN_NAME3FKTABLE_NAMEbase:14FKCOLUMN_NAME5KEY_SEQbase:16UPDATE_ACTION0:cascade
  1:restrict 2:no action 3:set null7DELETE_ACTION0:cascade 1:restrict 2:no action 3:set
  null8FK_NAME9PK_NAME

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>int</info>       <strong>$schema_type</strong>      Schema data that you want to know.
  <info>string</info>    <strong>$class_name</strong>       Class you want to know the schema of.
  <info>string</info>    <strong>$attr_name</strong>        Attribute you want to know the schema of.

<comment>Return:</comment>
  <info>array</info>  Array containing the schema information, when process is successful, 或者在失败时返回
         <info>false</info>.


id: cubrid_send_glo
type: function
doc:
<comment>Description:</comment>
  Read data from glo and send it to std output
  
  The <strong>cubrid_send_glo()</strong> function is used to read data from glo instance and sends it to the PHP
  standard output.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              Oid of the glo instance that you want to read data from.

<comment>Return:</comment>
  <info>int</info>  <info>true</info>, when process is successful.
       
       <info>false</info>, when process is unsuccessful.

<comment>See Also:</comment>
   * <strong>cubrid_new_glo()</strong>
   * <strong>cubrid_save_to_glo()</strong>
   * <strong>cubrid_load_from_glo()</strong>


id: cubrid_seq_drop
type: function
doc:
<comment>Description:</comment>
  Delete an element from sequence type column using OID
  
  The <strong>cubrid_seq_drop()</strong> function is used to delete an element you request from the given sequence
  type attribute in the database.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance you want to work with.
  <info>string</info>    <strong>$attr_name</strong>        Name of the attribute that you want to delete an element from.
  <info>int</info>       <strong>$index</strong>            Index of the element that you want to delete (1-based).

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_seq_insert()</strong>
   * <strong>cubrid_seq_put()</strong>


id: cubrid_seq_insert
type: function
doc:
<comment>Description:</comment>
  Insert an element to a sequence type column using OID
  
  The <strong>cubrid_col_insert()</strong> function is used to insert an element to a sequence type attribute in a
  requested location.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance you want to work with.
  <info>string</info>    <strong>$attr_name</strong>        Name of the attribute you want to insert an instance to.
  <info>int</info>       <strong>$index</strong>            Location of the element, you want to insert the element to (1-based).
  <info>string</info>    <strong>$seq_element</strong>      Content of the element that you want to insert.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_seq_drop()</strong>
   * <strong>cubrid_seq_put()</strong>


id: cubrid_seq_put
type: function
doc:
<comment>Description:</comment>
  Update the element value of sequence type column using OID
  
  The <strong>cubrid_seq_put()</strong> function is used to update the content of the requested element in a sequent
  type attribute using OID.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance you want to work with.
  <info>string</info>    <strong>$attr_name</strong>        Name of the attribute that you want to update an element.
  <info>int</info>       <strong>$index</strong>            Index (1-based) of the element that you want to update.
  <info>string</info>    <strong>$seq_element</strong>      New content that you want to use for the update.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_seq_drop()</strong>
   * <strong>cubrid_seq_insert()</strong>


id: cubrid_set_add
type: function
doc:
<comment>Description:</comment>
  Insert a single element to set type column using OID
  
  The <strong>cubrid_set_add()</strong> function is used to insert a single element to a set type attribute (set,
  multiset, sequence) you requested.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance you want to work with.
  <info>string</info>    <strong>$attr_name</strong>        Name of the attribute you want to insert an element.
  <info>string</info>    <strong>$set_element</strong>      Content of the element you want to insert.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_seq_drop()</strong>


id: cubrid_set_autocommit
type: function
doc:
<comment>Description:</comment>
  Set autocommit mode of the connection
  
  The <strong>cubrid_set_autocommit()</strong> function is used to set the CUBRID database auto-commit mode of the
  current database connection.
  
  In CUBRID PHP, auto-commit mode is disabled by default for transaction management. When
  auto-commit mode is truned from off to on, any pending work is automatically committed.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>bool</info>      <strong>$mode</strong>             Auto-commit mode. The following constants can be used:
                              
                              <info>CUBRID_AUTOCOMMIT_FALSE</info><info>CUBRID_AUTOCOMMIT_TRUE</info>

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_get_autocommit()</strong>
   * <strong>cubrid_commit()</strong>


id: cubrid_set_db_parameter
type: function
doc:
<comment>Description:</comment>
  Sets the CUBRID database parameters
  
  The <strong>cubrid_set_db_parameter()</strong> function is used to set the CUBRID database parameters. It can set
  the following CUBRID database parameters:
  
  <info>PARAM_ISOLATION_LEVEL</info><info>PARAM_LOCK_TIMEOUT</info>
  
  The auto-commit mode can be set by using <strong>cubrid_set_autocommit()</strong>.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection. If the connection identifier is not specified,
                              the last link opened by <strong>cubrid_connect()</strong> is assumed.
  <info>int</info>       <strong>$param_type</strong>       Database parameter type.
  <info>int</info>       <strong>$param_value</strong>      Isolation level value (1-6) or lock timeout (in seconds) value.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_get_db_parameter()</strong>
   * <strong>cubrid_set_autocommit()</strong>


id: cubrid_set_drop
type: function
doc:
<comment>Description:</comment>
  Delete an element from set type column using OID
  
  The <strong>cubrid_set_drop()</strong> function is used to delete an element that you request from the given set
  type (set, multiset) attribute of the database.

<comment>Param:</comment>
  <info>resource</info>  <strong>$conn_identifier</strong>  Connection identifier.
  <info>string</info>    <strong>$oid</strong>              OID of the instance you want to work with.
  <info>string</info>    <strong>$attr_name</strong>        Name of the attribute you want to delete an element from.
  <info>string</info>    <strong>$set_element</strong>      Content of the element you want to delete.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_set_add()</strong>


id: cubrid_set_query_timeout
type: function
doc:
<comment>Description:</comment>
  Set the timeout time of query execution
  
  The <strong>cubrid_set_query_timeout()</strong> function is used to set the timeout time of query execution.

<comment>Param:</comment>
  <info>resource</info>  <strong>$req_identifier</strong>  Request identifier.
  <info>int</info>       <strong>$timeout</strong>         Timeout time in milliseconds.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>cubrid_get_query_timeout()</strong>


id: cubrid_unbuffered_query
type: function
doc:
<comment>Description:</comment>
  Perform a query without fetching the results into memory
  
  This function performs a query without waiting for that all query results have been complete. It
  will return  when the results are being generated.

<comment>Param:</comment>
  <info>string</info>    <strong>$query</strong>            A SQL query.
  <info>resource</info>  <strong>$conn_identifier</strong>  The CUBRID connection. If the connection identifier is not specified,
                              the last connection opened by <strong>cubrid_connect()</strong> is assumed.

<comment>Return:</comment>
  <info>resource</info>  For SELECT, SHOW, DESCRIBE or EXPLAIN statements returns a request identifier resource
            on success.
            
            For other type of SQL statements, UPDATE, DELETE, DROP, etc, returns <info>true</info> on success.
            
            <info>false</info> on failure.


id: cubrid_version
type: function
doc:
<comment>Description:</comment>
  Get the CUBRID PHP module's version
  
  The <strong>cubrid_version()</strong> function is used to get the CUBRID PHP module's version.

<comment>Return:</comment>
  <info>string</info>  Version information (eg. "8.3.1.0001").

<comment>See Also:</comment>
   * <strong>cubrid_error_code()</strong>
   * <strong>cubrid_error_code_facility()</strong>


id: curl_close
type: function
doc:
<comment>Description:</comment>
  关闭 cURL 会话
  
  此函数无效。在 PHP 8.0.0 之前，用于关闭资源。
  
  关闭 cURL 会话并且释放所有资源。也会删除 cURL 句柄 <strong>$handle</strong>。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>curl_init()</strong>
   * <strong>curl_multi_close()</strong>


id: curl_copy_handle
type: function
doc:
<comment>Description:</comment>
  复制 cURL 句柄及其所有选项
  
  复制 cURL 句柄并保持相同选项。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>CurlHandle|false</info>  返回新 cURL 句柄， 或者在失败时返回 <info>false</info>。


id: curl_errno
type: function
doc:
<comment>Description:</comment>
  返回最后一次的错误代码
  
  返回最后一次 cURL 操作的错误代码。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>int</info>  返回错误代码或在没有错误发生时返回 <return>0</return> (零)。

<comment>See Also:</comment>
   * <strong>curl_error()</strong>
   * Curl 错误代码


id: curl_error
type: function
doc:
<comment>Description:</comment>
  返回当前会话最后一次错误的字符串
  
  返回最近一次 cURL 操作的文本错误详情。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>string</info>  返回错误信息，或者如果没有任何错误发生就返回 <return>''</return> (空字符串)。

<comment>See Also:</comment>
   * <strong>curl_errno()</strong>
   * Curl 错误代码


id: curl_escape
type: function
doc:
<comment>Description:</comment>
  使用 URL 编码给定的字符串
  
  该函数使用 URL 根据 RFC 3986 编码给定的字符串。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。
  <info>string</info>      <strong>$string</strong>  需要编码的字符串。

<comment>Return:</comment>
  <info>string|false</info>  返回编码后的字符串 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>curl_unescape()</strong>
   * <strong>urlencode()</strong>
   * <strong>rawurlencode()</strong>
   * RFC 3986


id: curl_exec
type: function
doc:
<comment>Description:</comment>
  执行 cURL 会话
  
  执行指定 cURL 会话。
  
  这个函数应该在初始化 cURL 会话并且设置所有选项后调用。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>string|bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。 然而，如果设置了 <info>CURLOPT_RETURNTRANSFER</info> 选
               项，将会在成功时返回结果，失败时返回 <info>false</info>。
               
               此函数可能返回布尔值
               <info>false</info>，但也可能返回等同于 <info>false</info> 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用
               ===
               运算符来测试此函数的返回值。
               
               注意：指示错误的响应状态码（例如 <return>404 Not found</return>）不会视为失败。这种情况可以使用
               <strong>curl_getinfo()</strong> 来检查。

<comment>See Also:</comment>
   * <strong>curl_multi_exec()</strong>


id: curl_getinfo
type: function
doc:
<comment>Description:</comment>
  获取一个cURL连接资源句柄的信息
  
  获取最后一次传输的相关信息。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。
  <info>int|null</info>    <strong>$option</strong>  这个参数可能是以下常量之一: <info>CURLINFO_EFFECTIVE_URL</info>——最后一个有效的 URL
                       <info>CURLINFO_HTTP_CODE</info>——最后的响应代码。从 cURL 7.10.8 开始，这是
                       <info>CURLINFO_RESPONSE_CODE</info> 的旧别名 <info>CURLINFO_FILETIME</info>——启用了 <info>CURLOPT_FILETIME</info> 后
                       检索文档的远程时间；如果返回 -1，则文档的时间未知 <info>CURLINFO_TOTAL_TIME</info>——最后一
                       次传输的总事务时间（以秒为单位） <info>CURLINFO_NAMELOOKUP_TIME</info>——到名称解析完成所需
                       的时间（以秒为单位） <info>CURLINFO_CONNECT_TIME</info>——建立连接所需的时间（以秒为单位）
                       <info>CURLINFO_PRETRANSFER_TIME</info>——从开始到文件准备传输所需的时间（以秒为单位）
                       <info>CURLINFO_STARTTRANSFER_TIME</info>——从开始到传输第一个字节所需的时间（以秒为单位）
                       <info>CURLINFO_REDIRECT_COUNT</info>——启用 <info>CURLOPT_FOLLOWLOCATION</info> 选项的重定向次数
                       <info>CURLINFO_REDIRECT_TIME</info>——在启用 <info>CURLOPT_FOLLOWLOCATION</info> 选项的情况下，最终事务
                       开始之前所有重定向步骤的时间（以秒为单位） <info>CURLINFO_REDIRECT_URL</info>——禁用
                       <info>CURLOPT_FOLLOWLOCATION</info> 选项：重定向 URL 在上次事务中找到，接下来应该手动请
                       求。在启用 <info>CURLOPT_FOLLOWLOCATION</info> 选项的情况下，此返回值为空。在这种情况下，
                       重定向的 URL 可以在 <info>CURLINFO_EFFECTIVE_URL</info> 中获取 <info>CURLINFO_PRIMARY_IP</info>——最近连
                       接的 IP 地址 <info>CURLINFO_PRIMARY_PORT</info>——最近一次连接的目标端口
                       <info>CURLINFO_LOCAL_IP</info>——最近连接的本地（源）IP 地址 <info>CURLINFO_LOCAL_PORT</info>——最近连接
                       的本地（源）端口 <info>CURLINFO_SIZE_UPLOAD</info>——以字节为单位返回上传数据量的总值
                       <info>CURLINFO_SIZE_DOWNLOAD</info>——以字节为单位返回下载数据量的总值
                       <info>CURLINFO_SPEED_DOWNLOAD</info>——平均下载速度 <info>CURLINFO_SPEED_UPLOAD</info>——平均上传速度
                       <info>CURLINFO_HEADER_SIZE</info>——检索到的所有 header 大小 <info>CURLINFO_HEADER_OUT</info>——发送请求
                       的字符串。为此，通过调用 <strong>curl_setopt()</strong> 将 <info>CURLINFO_HEADER_OUT</info> 选项添加到句柄
                       <info>CURLINFO_REFERER</info> - The referrer header <info>CURLINFO_REQUEST_SIZE</info>——已发出请求的总
                       大小，当前仅针对 HTTP 请求 <info>CURLINFO_RETRY_AFTER</info> - The information from the
                       <return>Retry-After:</return> header, or zero if there was no valid header.
                       <info>CURLINFO_SSL_VERIFYRESULT</info>——通过设置 <info>CURLOPT_SSL_VERIFYPEER</info> 请求的 SSL 认证验
                       证结果 <info>CURLINFO_CONTENT_LENGTH_DOWNLOAD</info>——从 <return>Content-Length:</return> 字段中读取的下载
                       内容长度 <info>CURLINFO_CONTENT_LENGTH_UPLOAD</info>——上传指定大小
                       <info>CURLINFO_CONTENT_TYPE</info>——<return>Content-Type:</return>所请求文档的类型。NULL 表示服务器没有发送
                       有效的 <return>Content-Type:</return> header <info>CURLINFO_PRIVATE</info>——与此 cURL 句柄关联的私有数据，
                       之前使用 <strong>curl_setopt()</strong> 的 <info>CURLOPT_PRIVATE</info> 选项设置 <info>CURLINFO_PROXY_ERROR</info> - The
                       detailed (SOCKS) proxy error code when the most recent transfer returned a
                       <info>CURLE_PROXY</info> error. The returned value will be exactly one of the <info>CURLPX_*</info>
                       values. The error code will be <info>CURLPX_OK</info> if no response code was available.
                       <info>CURLINFO_RESPONSE_CODE</info>——最后的响应代码 <info>CURLINFO_HTTP_CONNECTCODE</info>——CONNECT 响
                       应代码 <info>CURLINFO_HTTPAUTH_AVAIL</info>——位掩码表示先前响应可用的身份验证方法
                       <info>CURLINFO_PROXYAUTH_AVAIL</info>——位掩码表示先前响应可用的代理身份验证方法
                       <info>CURLINFO_OS_ERRNO</info>——来自连接失败的 Errno。该数字特定于 OS 和指定系统。
                       <info>CURLINFO_NUM_CONNECTS</info> - curl 为实现先前的传输所必须创建的连接数
                       <info>CURLINFO_SSL_ENGINES</info>——支持 OpenSSL 加密引擎 <info>CURLINFO_COOKIELIST</info>——所有已知的
                       cookie <info>CURLINFO_FTP_ENTRY_PATH</info>——FTP 服务器中的入口路径
                       <info>CURLINFO_APPCONNECT_TIME</info>——从开始到SSL/SSH 完成与远程主机的连接/握手所花费的时
                       间（以秒为单位） <info>CURLINFO_CERTINFO</info>——TLS 证书链 <info>CURLINFO_CONDITION_UNMET</info>——未满
                       足时间条件的信息 <info>CURLINFO_RTSP_CLIENT_CSEQ</info>——下一个 RTSP 客户端 CSeq
                       <info>CURLINFO_RTSP_CSEQ_RECV</info>——最近检索到的 CSeq <info>CURLINFO_RTSP_SERVER_CSEQ</info>——下一个
                       RTSP 服务器端 CSeq <info>CURLINFO_RTSP_SESSION_ID</info>——RTSP 会话 ID
                       <info>CURLINFO_CONTENT_LENGTH_DOWNLOAD_T</info>——下载的内容长度。此值从 <return>Content-Length:</return> 字
                       段读取。如果大小未知则为 -1 <info>CURLINFO_CONTENT_LENGTH_UPLOAD_T</info>——上传的指定大
                       小。如果未知则为 -1 <info>CURLINFO_HTTP_VERSION</info> - 返回最后一次 HTTP 连接中使用的版
                       本。返回值将是定义的 <info>CURL_HTTP_VERSION_*</info> 常量之一，如果无法确定版本，则返回
                       0。 <info>CURLINFO_PROTOCOL</info> - 在最后一个 HTTP 连接中使用的协议。返回值将会是
                       <info>CURLPROTO_*</info> 中的一个值 <info>CURLINFO_PROXY_SSL_VERIFYRESULT</info> - 请求的证书验证结果
                       （使用 <info>CURLOPT_PROXY_SSL_VERIFYPEER</info> 选项）。仅用于 HTTPS 代理 <info>CURLINFO_SCHEME</info>
                       - 最近连接使用的 URL 协议 <info>CURLINFO_SIZE_DOWNLOAD_T</info> - 已下载的总字节数。此数值
                       仅针对最新的传输，并且在每次新的传输时都将会重置 <info>CURLINFO_SIZE_UPLOAD_T</info>——上传
                       的总字节数 <info>CURLINFO_SPEED_DOWNLOAD_T</info> - curl 测量的完整下载速度的平均值，以字
                       节/秒为单位 <info>CURLINFO_SPEED_UPLOAD_T</info> - curl 测量的完整上传速度的平均值，以字节
                       /秒为单位 <info>CURLINFO_APPCONNECT_TIME_T</info> - 从开始到与远程主机 SSL/SSH 连接/握手完
                       成所经过的时间，以微秒为单位 <info>CURLINFO_CONNECT_TIME_T</info> - 从开始到与远程主机（或
                       代理）建立连接完成所经过的总时间，以微秒为单位 <info>CURLINFO_FILETIME_T</info> - 检索的文
                       档的远程时间（Unix 时间戳），是 <info>CURLINFO_FILETIME</info> 的替代值，允许具有 32 bit
                       变量的系统提取超出 32 bit 时间戳范围之外的日期 <info>CURLINFO_NAMELOOKUP_TIME_T</info>——从
                       开始到名称解析完成的时间（以微秒为单位） <info>CURLINFO_PRETRANSFER_TIME_T</info> - 从开始
                       到文件传输即将开始的时间，以微秒为单位 <info>CURLINFO_REDIRECT_TIME_T</info> - 在最终事务
                       开始之前，所有重定向步骤（包括名称查找、连接、预传输和传输）所花费的总时间，
                       以微秒为单位。 <info>CURLINFO_STARTTRANSFER_TIME_T</info>——从开始到接收到第一个字节所花费
                       的时间（以微秒为单位） <info>CURLINFO_TOTAL_TIME_T</info>——上次传输的总时间（以微秒为单
                       位），包括名称解析、TCP 连接等。
                       
                       <info>CURLINFO_EFFECTIVE_URL</info>——最后一个有效的 URL
                       
                       <info>CURLINFO_HTTP_CODE</info>——最后的响应代码。从 cURL 7.10.8 开始，这是
                       <info>CURLINFO_RESPONSE_CODE</info> 的旧别名
                       
                       <info>CURLINFO_FILETIME</info>——启用了 <info>CURLOPT_FILETIME</info> 后检索文档的远程时间；如果返回
                       -1，则文档的时间未知
                       
                       <info>CURLINFO_TOTAL_TIME</info>——最后一次传输的总事务时间（以秒为单位）
                       
                       <info>CURLINFO_NAMELOOKUP_TIME</info>——到名称解析完成所需的时间（以秒为单位）
                       
                       <info>CURLINFO_CONNECT_TIME</info>——建立连接所需的时间（以秒为单位）
                       
                       <info>CURLINFO_PRETRANSFER_TIME</info>——从开始到文件准备传输所需的时间（以秒为单位）
                       
                       <info>CURLINFO_STARTTRANSFER_TIME</info>——从开始到传输第一个字节所需的时间（以秒为单位）
                       
                       <info>CURLINFO_REDIRECT_COUNT</info>——启用 <info>CURLOPT_FOLLOWLOCATION</info> 选项的重定向次数
                       
                       <info>CURLINFO_REDIRECT_TIME</info>——在启用 <info>CURLOPT_FOLLOWLOCATION</info> 选项的情况下，最终事务
                       开始之前所有重定向步骤的时间（以秒为单位）
                       
                       <info>CURLINFO_REDIRECT_URL</info>——禁用 <info>CURLOPT_FOLLOWLOCATION</info> 选项：重定向 URL 在上次事
                       务中找到，接下来应该手动请求。在启用 <info>CURLOPT_FOLLOWLOCATION</info> 选项的情况下，此
                       返回值为空。在这种情况下，重定向的 URL 可以在 <info>CURLINFO_EFFECTIVE_URL</info> 中获取
                       
                       <info>CURLINFO_PRIMARY_IP</info>——最近连接的 IP 地址
                       
                       <info>CURLINFO_PRIMARY_PORT</info>——最近一次连接的目标端口
                       
                       <info>CURLINFO_LOCAL_IP</info>——最近连接的本地（源）IP 地址
                       
                       <info>CURLINFO_LOCAL_PORT</info>——最近连接的本地（源）端口
                       
                       <info>CURLINFO_SIZE_UPLOAD</info>——以字节为单位返回上传数据量的总值
                       
                       <info>CURLINFO_SIZE_DOWNLOAD</info>——以字节为单位返回下载数据量的总值
                       
                       <info>CURLINFO_SPEED_DOWNLOAD</info>——平均下载速度
                       
                       <info>CURLINFO_SPEED_UPLOAD</info>——平均上传速度
                       
                       <info>CURLINFO_HEADER_SIZE</info>——检索到的所有 header 大小
                       
                       <info>CURLINFO_HEADER_OUT</info>——发送请求的字符串。为此，通过调用 <strong>curl_setopt()</strong> 将
                       <info>CURLINFO_HEADER_OUT</info> 选项添加到句柄
                       
                       <info>CURLINFO_REFERER</info> - The referrer header
                       
                       <info>CURLINFO_REQUEST_SIZE</info>——已发出请求的总大小，当前仅针对 HTTP 请求
                       
                       <info>CURLINFO_RETRY_AFTER</info> - The information from the <return>Retry-After:</return> header, or zero
                       if there was no valid header.
                       
                       <info>CURLINFO_SSL_VERIFYRESULT</info>——通过设置 <info>CURLOPT_SSL_VERIFYPEER</info> 请求的 SSL 认证验
                       证结果
                       
                       <info>CURLINFO_CONTENT_LENGTH_DOWNLOAD</info>——从 <return>Content-Length:</return> 字段中读取的下载内容长度
                       
                       <info>CURLINFO_CONTENT_LENGTH_UPLOAD</info>——上传指定大小
                       
                       <info>CURLINFO_CONTENT_TYPE</info>——<return>Content-Type:</return>所请求文档的类型。NULL 表示服务器没有发送
                       有效的 <return>Content-Type:</return> header
                       
                       <info>CURLINFO_PRIVATE</info>——与此 cURL 句柄关联的私有数据，之前使用 <strong>curl_setopt()</strong> 的
                       <info>CURLOPT_PRIVATE</info> 选项设置
                       
                       <info>CURLINFO_PROXY_ERROR</info> - The detailed (SOCKS) proxy error code when the most
                       recent transfer returned a <info>CURLE_PROXY</info> error. The returned value will be
                       exactly one of the <info>CURLPX_*</info> values. The error code will be <info>CURLPX_OK</info> if no
                       response code was available.
                       
                       <info>CURLINFO_RESPONSE_CODE</info>——最后的响应代码
                       
                       <info>CURLINFO_HTTP_CONNECTCODE</info>——CONNECT 响应代码
                       
                       <info>CURLINFO_HTTPAUTH_AVAIL</info>——位掩码表示先前响应可用的身份验证方法
                       
                       <info>CURLINFO_PROXYAUTH_AVAIL</info>——位掩码表示先前响应可用的代理身份验证方法
                       
                       <info>CURLINFO_OS_ERRNO</info>——来自连接失败的 Errno。该数字特定于 OS 和指定系统。
                       
                       <info>CURLINFO_NUM_CONNECTS</info> - curl 为实现先前的传输所必须创建的连接数
                       
                       <info>CURLINFO_SSL_ENGINES</info>——支持 OpenSSL 加密引擎
                       
                       <info>CURLINFO_COOKIELIST</info>——所有已知的 cookie
                       
                       <info>CURLINFO_FTP_ENTRY_PATH</info>——FTP 服务器中的入口路径
                       
                       <info>CURLINFO_APPCONNECT_TIME</info>——从开始到SSL/SSH 完成与远程主机的连接/握手所花费的时
                       间（以秒为单位）
                       
                       <info>CURLINFO_CERTINFO</info>——TLS 证书链
                       
                       <info>CURLINFO_CONDITION_UNMET</info>——未满足时间条件的信息
                       
                       <info>CURLINFO_RTSP_CLIENT_CSEQ</info>——下一个 RTSP 客户端 CSeq
                       
                       <info>CURLINFO_RTSP_CSEQ_RECV</info>——最近检索到的 CSeq
                       
                       <info>CURLINFO_RTSP_SERVER_CSEQ</info>——下一个 RTSP 服务器端 CSeq
                       
                       <info>CURLINFO_RTSP_SESSION_ID</info>——RTSP 会话 ID
                       
                       <info>CURLINFO_CONTENT_LENGTH_DOWNLOAD_T</info>——下载的内容长度。此值从 <return>Content-Length:</return> 字
                       段读取。如果大小未知则为 -1
                       
                       <info>CURLINFO_CONTENT_LENGTH_UPLOAD_T</info>——上传的指定大小。如果未知则为 -1
                       
                       <info>CURLINFO_HTTP_VERSION</info> - 返回最后一次 HTTP 连接中使用的版本。返回值将是定义的
                       <info>CURL_HTTP_VERSION_*</info> 常量之一，如果无法确定版本，则返回 0。
                       
                       <info>CURLINFO_PROTOCOL</info> - 在最后一个 HTTP 连接中使用的协议。返回值将会是
                       <info>CURLPROTO_*</info> 中的一个值
                       
                       <info>CURLINFO_PROXY_SSL_VERIFYRESULT</info> - 请求的证书验证结果（使用
                       <info>CURLOPT_PROXY_SSL_VERIFYPEER</info> 选项）。仅用于 HTTPS 代理
                       
                       <info>CURLINFO_SCHEME</info> - 最近连接使用的 URL 协议
                       
                       <info>CURLINFO_SIZE_DOWNLOAD_T</info> - 已下载的总字节数。此数值仅针对最新的传输，并且在每
                       次新的传输时都将会重置
                       
                       <info>CURLINFO_SIZE_UPLOAD_T</info>——上传的总字节数
                       
                       <info>CURLINFO_SPEED_DOWNLOAD_T</info> - curl 测量的完整下载速度的平均值，以字节/秒为单位
                       
                       <info>CURLINFO_SPEED_UPLOAD_T</info> - curl 测量的完整上传速度的平均值，以字节/秒为单位
                       
                       <info>CURLINFO_APPCONNECT_TIME_T</info> - 从开始到与远程主机 SSL/SSH 连接/握手完成所经过的
                       时间，以微秒为单位
                       
                       <info>CURLINFO_CONNECT_TIME_T</info> - 从开始到与远程主机（或代理）建立连接完成所经过的总
                       时间，以微秒为单位
                       
                       <info>CURLINFO_FILETIME_T</info> - 检索的文档的远程时间（Unix 时间戳），是
                       <info>CURLINFO_FILETIME</info> 的替代值，允许具有 32 bit 变量的系统提取超出 32 bit 时间戳
                       范围之外的日期
                       
                       <info>CURLINFO_NAMELOOKUP_TIME_T</info>——从开始到名称解析完成的时间（以微秒为单位）
                       
                       <info>CURLINFO_PRETRANSFER_TIME_T</info> - 从开始到文件传输即将开始的时间，以微秒为单位
                       
                       <info>CURLINFO_REDIRECT_TIME_T</info> - 在最终事务开始之前，所有重定向步骤（包括名称查找、
                       连接、预传输和传输）所花费的总时间，以微秒为单位。
                       
                       <info>CURLINFO_STARTTRANSFER_TIME_T</info>——从开始到接收到第一个字节所花费的时间（以微秒为
                       单位）
                       
                       <info>CURLINFO_TOTAL_TIME_T</info>——上次传输的总时间（以微秒为单位），包括名称解析、TCP 连
                       接等。

<comment>Return:</comment>
  <info>mixed</info>  如果指定 <strong>$option</strong>，将返回它的值。否则将返回包含下列元素的关联数组（分别对应 <strong>$option</strong>），失败
         时为  <info>false</info>：  "url"  "content_type"  "http_code"  "header_size"  "request_size"
         "filetime"  "ssl_verify_result"  "redirect_count"  "total_time"  "namelookup_time"
         "connect_time"  "pretransfer_time"  "size_upload"  "size_download"  "speed_download"
         "speed_upload"  "download_content_length"  "upload_content_length"  "starttransfer_time"
         "redirect_time"  "certinfo"  "primary_ip"  "primary_port"  "local_ip"  "local_port"
         "redirect_url"  "request_header"（只有在之前调用 <strong>curl_setopt()</strong> 设置 <info>CURLINFO_HEADER_OUT</info> 后
         才会设置）  注意，私有数据不包含在关联数组中，必须使用 <info>CURLINFO_PRIVATE</info> 选项单独检索。
         
         "url"
         
         "content_type"
         
         "http_code"
         
         "header_size"
         
         "request_size"
         
         "filetime"
         
         "ssl_verify_result"
         
         "redirect_count"
         
         "total_time"
         
         "namelookup_time"
         
         "connect_time"
         
         "pretransfer_time"
         
         "size_upload"
         
         "size_download"
         
         "speed_download"
         
         "speed_upload"
         
         "download_content_length"
         
         "upload_content_length"
         
         "starttransfer_time"
         
         "redirect_time"
         
         "certinfo"
         
         "primary_ip"
         
         "primary_port"
         
         "local_ip"
         
         "local_port"
         
         "redirect_url"
         
         "request_header"（只有在之前调用 <strong>curl_setopt()</strong> 设置 <info>CURLINFO_HEADER_OUT</info> 后才会设置）


id: curl_init
type: function
doc:
<comment>Description:</comment>
  初始化 cURL 会话
  
  初始化新会话，返回 cURL 句柄，供 <strong>curl_setopt()</strong>、<strong>curl_exec()</strong> 和 <strong>curl_close()</strong> 函数使用。

<comment>Param:</comment>
  <info>string|null</info>  <strong>$url</strong>  如果提供了该参数，<info>CURLOPT_URL</info> 选项将会被设置成这个值。也可以使用 <strong>curl_setopt()</strong>
                     函数手动地设置这个值。
                     
                     如果设置了 open_basedir，<return>file</return> 协议会被 cURL 禁用。

<comment>Return:</comment>
  <info>CurlHandle|false</info>  成功时返回 cURL 句柄，错误时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>curl_close()</strong>
   * <strong>curl_multi_init()</strong>


id: curl_multi_add_handle
type: function
doc:
<comment>Description:</comment>
  添加普通 cURL 句柄到 cURL 多句柄
  
  增加 <strong>$handle</strong> 句柄到多句柄 <strong>$multi_handle</strong>

<comment>Param:</comment>
  <info>CurlMultiHandle</info>  <strong>$multi_handle</strong>  由 
                                  <strong>curl_multi_init()</strong> 返回的 cURL 多个句柄。
  <info>CurlHandle</info>       <strong>$handle</strong>        由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>int</info>  成功时返回 0，失败时返回 <info>CURLM_XXX</info> 之一的错误码。

<comment>See Also:</comment>
   * <strong>curl_multi_remove_handle()</strong>
   * <strong>curl_multi_init()</strong>
   * <strong>curl_init()</strong>


id: curl_multi_close
type: function
doc:
<comment>Description:</comment>
  关闭一组 cURL 句柄
  
  此函数无效。在 PHP 8.0.0 之前，用于关闭资源。
  
  关闭一组 cURL 句柄。

<comment>Param:</comment>
  <info>CurlMultiHandle</info>  <strong>$multi_handle</strong>  由 
                                  <strong>curl_multi_init()</strong> 返回的 cURL 多个句柄。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>curl_multi_init()</strong>
   * <strong>curl_close()</strong>


id: curl_multi_errno
type: function
doc:
<comment>Description:</comment>
  返回上一次 curl 批处理的错误码
  
  返回整型数字，为上次 curl 批处理错误码。

<comment>Param:</comment>
  <info>CurlMultiHandle</info>  <strong>$multi_handle</strong>  由 
                                  <strong>curl_multi_init()</strong> 返回的 cURL 多个句柄。

<comment>Return:</comment>
  <info>int</info>  返回整型数字，包含上次 curl 批处理的错误码。

<comment>See Also:</comment>
   * <strong>curl_errno()</strong>


id: curl_multi_exec
type: function
doc:
<comment>Description:</comment>
  运行当前 cURL 句柄的子连接
  
  处理在栈中的每一个句柄。无论该句柄需要读取或写入数据都可调用此方法。

<comment>Param:</comment>
  <info>CurlMultiHandle</info>  <strong>$multi_handle</strong>   由 
                                   <strong>curl_multi_init()</strong> 返回的 cURL 多个句柄。
  <info>int</info>              <strong>$still_running</strong>  一个用来判断操作是否仍在执行的标识的引用。

<comment>Return:</comment>
  <info>int</info>  定义于 cURL 预定义常量中的 cURL 代码。
       
       该函数仅返回关于整个批处理栈相关的错误。即使返回 <info>CURLM_OK</info> 时单个传输仍可能有问题。

<comment>See Also:</comment>
   * <strong>curl_multi_init()</strong>
   * <strong>curl_multi_select()</strong>
   * <strong>curl_exec()</strong>


id: curl_multi_getcontent
type: function
doc:
<comment>Description:</comment>
  如果设置了 CURLOPT_RETURNTRANSFER，则返回 cURL 句柄的内容
  
  如果 <info>CURLOPT_RETURNTRANSFER</info> 是为指定句柄设置的选项，则此函数将会以字符串的形式返回 cURL 句柄的内
  容。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>string|null</info>  如果设置了 <info>CURLOPT_RETURNTRANSFER</info>，则返回 cURL 句柄的内容，不设置的话返回 <info>null</info>。

<comment>See Also:</comment>
   * <strong>curl_multi_init()</strong>


id: curl_multi_info_read
type: function
doc:
<comment>Description:</comment>
  获取当前传输的有关信息
  
  查询多句柄是否有来自个别传输的消息或信息，消息可能包含诸如来自传输的错误代码或者仅是传输已完成之类
  的信息。
  
  重复调用此函数，每次都会返回新结果，返回 <info>false</info> 作为此时没有更多信息可以获取的信号。通过
  <strong>$queued_messages</strong> 返回的整数包含当前函数调用后剩余的消息数量。
  
  返回的资源指向的数据将无法在调用 <strong>curl_multi_remove_handle()</strong> 后继续存在。

<comment>Param:</comment>
  <info>CurlMultiHandle</info>  <strong>$multi_handle</strong>     由 
                                     <strong>curl_multi_init()</strong> 返回的 cURL 多个句柄。
  <info>int</info>              <strong>$queued_messages</strong>  仍在队列中的消息数量。

<comment>Return:</comment>
  <info>array|false</info>  成功时返回信息的关联数组，失败时返回 <info>false</info>。
               
               返回数组的内容Key:Value:<return>msg</return><info>CURLMSG_DONE</info> 常量。其他返回值当前不可用。<return>result</return><info>CURLE_*</info> 常
               量之一。如果一切都好，将会返回 <info>CURLE_OK</info>。<return>handle</return>cURL 资源类型表明它有关的句柄。

<comment>See Also:</comment>
   * <strong>curl_multi_init()</strong>


id: curl_multi_init
type: function
doc:
<comment>Description:</comment>
  返回新 cURL 批处理句柄
  
  允许异步处理多个 cURL 句柄。

<comment>Return:</comment>
  <info>CurlMultiHandle</info>  返回 cURL 批处理句柄。

<comment>See Also:</comment>
   * <strong>curl_init()</strong>
   * <strong>curl_multi_close()</strong>


id: curl_multi_remove_handle
type: function
doc:
<comment>Description:</comment>
  从一组 cURL 句柄中移除一个多句柄
  
  从指定的 <strong>$multi_handle</strong> 中移除指定的 <strong>$handle</strong> 句柄。当移除 <strong>$handle</strong> 后，在此句柄上运行 <strong>curl_exec()</strong> 也
  是完全允许的。移除正在使用的 <strong>$handle</strong> 句柄，涉及该句柄的正在进行的传输将有效停止。

<comment>Param:</comment>
  <info>CurlMultiHandle</info>  <strong>$multi_handle</strong>  由 
                                  <strong>curl_multi_init()</strong> 返回的 cURL 多个句柄。
  <info>CurlHandle</info>       <strong>$handle</strong>        由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>int</info>  成功时返回 0，失败时返回 <info>CURLM_XXX</info> 错误代码中的一个。

<comment>See Also:</comment>
   * <strong>curl_init()</strong>
   * <strong>curl_multi_init()</strong>
   * <strong>curl_multi_add_handle()</strong>


id: curl_multi_select
type: function
doc:
<comment>Description:</comment>
  在任意 curl_multi 连接上等待活动
  
  阻塞到任意 curl_multi连接上有活动。

<comment>Param:</comment>
  <info></info>       <strong>$multi_handle</strong>  由 
                        <strong>curl_multi_init()</strong> 返回的 cURL 多个句柄。
  <info>float</info>  <strong>$timeout</strong>       以秒为单位，等待响应的时间。

<comment>Return:</comment>
  <info>int</info>  成功时返回描述符集合中描述符的数量。如果没有任何活动的描述符，则为 0。失败时，此函数将在
       select 失败时返回 -1（来自底层 select 系统调用）。

<comment>See Also:</comment>
   * <strong>curl_multi_init()</strong>


id: curl_multi_setopt
type: function
doc:
<comment>Description:</comment>
  设置 cURL 并行选项
  
  为给定的 cURL 并行句柄设置选项。

<comment>Param:</comment>
  <info>CurlMultiHandle</info>  <strong>$multi_handle</strong>  由 
                                  <strong>curl_multi_init()</strong> 返回的 cURL 多个句柄。
  <info>int</info>              <strong>$option</strong>        常量 <info>CURLMOPT_*</info> 之一。
  <info>mixed</info>            <strong>$value</strong>         将要设置给 <strong>$option</strong> 的值。
                                  
                                  在 <strong>$option</strong> 参数为下列值时 <strong>$value</strong> 需要为 <info>int</info> 类型： 选项设置 <strong>$value</strong>
                                  为<info>CURLMOPT_PIPELINING</info> 传递 1 启用或传递 0 禁用。在多句柄上启用管道
                                  将使其尝试对使用此句柄的传输尽可能执行 HTTP 管道操作。这意味着如果
                                  添加的第二个请求可以使用已有连接，则第二个请求将在同一连接上使用
                                  “管道”。 从 cURL 7.43.0 开始，该值是位掩码，如果可能，您还可以传递
                                  2 以尝试在已有的 HTTP/2 连接上复用多路新传输。传递 3 指示 cURL 请
                                  求彼此独立的管道和多路复用。 从 cURL 7.62.0 开始，设置管道位没有效
                                  果。除了整数文字，还可以使用 CURLPIPE_* 常量（如果可用）。
                                  <info>CURLMOPT_MAXCONNECTS</info> 传递数字，该数字将用作 libcurl 可以缓存的同时
                                  打开的最大连接数。默认情况下，数量将放大为适应
                                  <strong>curl_multi_add_handle()</strong> 添加的句柄数量的四倍。当缓存已满时，curl
                                  会关闭缓存中最早的一个，以防止打开的连接数增加。
                                  <info>CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</info> 传递数字，以字节为单位指定管道
                                  的块（chunk）长度阈值。 <info>CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</info> Pass
                                  a number that specifies the size threshold for pipelining penalty
                                  in bytes. <info>CURLMOPT_MAX_CONCURRENT_STREAMS</info> The set number will be
                                  used as the maximum number of concurrent streams for a connections
                                  that cURL should support on connections done using HTTP/2. Valid
                                  values range from <return>1</return> to <return>2147483647</return> (<return>2^31 - 1</return>). The value passed
                                  here would be honored based on other system resources properties.
                                  Default is <return>100</return>. <info>CURLMOPT_MAX_HOST_CONNECTIONS</info> 传递一个数字，指定连
                                  接单个主机的最大数量。 <info>CURLMOPT_MAX_PIPELINE_LENGTH</info> 传递数字，指定
                                  管道中的最大请求数。 <info>CURLMOPT_MAX_TOTAL_CONNECTIONS</info> 传递数字，指定
                                  同时打开连接的最大数量。 <info>CURLMOPT_PUSHFUNCTION</info> 传递 <info>callable</info> 以注
                                  册处理服务器推送且应具有以下签名：
                                  <info>int</info>pushfunction<info>resource</info><strong>$parent_ch</strong><info>resource</info><strong>$pushed_ch</strong><info>array</info><strong>$headers</strong>
                                  <strong>$parent_ch</strong> 父级 cURL 句柄（客户端发出的请求）。 <strong>$pushed_ch</strong> 推送请
                                  求的新 cURL 句柄。 <strong>$headers</strong> The push promise headers.  推送函数如
                                  果可以处理推送应该返回 <info>CURL_PUSH_OK</info>，或者返回 <info>CURL_PUSH_DENY</info> 拒
                                  绝。
                                  
                                  父级 cURL 句柄（客户端发出的请求）。
                                  
                                  推送请求的新 cURL 句柄。
                                  
                                  The push promise headers.
  <info>resource</info>         <strong>$parent_ch</strong>     父级 cURL 句柄（客户端发出的请求）。
  <info>resource</info>         <strong>$pushed_ch</strong>     推送请求的新 cURL 句柄。
  <info>array</info>            <strong>$headers</strong>       The push promise headers.

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。


id: curl_multi_strerror
type: function
doc:
<comment>Description:</comment>
  返回字符串描述的错误代码
  
  返回一个用以描述所给 CURLM 错误代码所对应的错误信息。

<comment>Param:</comment>
  <info>int</info>  <strong>$error_code</strong>  CURLM 错误代码中的常量之一。

<comment>Return:</comment>
  <info>string|null</info>  返回可用错误代码所对应的错误信息，否则返回 <info>null</info> 。

<comment>See Also:</comment>
   * <strong>curl_strerror()</strong>
   * cURL error codes


id: curl_pause
type: function
doc:
<comment>Description:</comment>
  暂停和取消暂停连接
  
  暂停或取消暂停 cURL 会话。 一个会话可以在传输过程中、在读、写或两个方向的传输过程中暂停，通过从使
  用 <strong>curl_setopt()</strong> 注册的回调函数中调用此函数来实现。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。
  <info>int</info>         <strong>$flags</strong>   <info>CURLPAUSE_*</info> 常量之一。

<comment>Return:</comment>
  <info>int</info>  返回一个错误代码 (如果没有错误则返回 <info>CURLE_OK</info> 常量)。


id: curl_reset
type: function
doc:
<comment>Description:</comment>
  重置一个 libcurl 会话句柄的所有的选项
  
  该函数将给定的 cURL 句柄所有选项重新设置为默认值。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。

<comment>Return:</comment>
  <info>void</info>  没有返回值。

<comment>See Also:</comment>
   * <strong>curl_setopt()</strong>


id: curl_setopt
type: function
doc:
<comment>Description:</comment>
  设置 cURL 传输选项
  
  为 cURL 会话句柄设置选项。

<comment>Param:</comment>
  <info>CurlHandle</info>  <strong>$handle</strong>  由 <strong>curl_init()</strong> 返回的 cURL 句柄。
  <info>int</info>         <strong>$option</strong>  需要设置的<return>CURLOPT_XXX</return>选项。
  <info>mixed</info>       <strong>$value</strong>   将设置在<strong>$option</strong>选项上的值。
                       
                       以下 <strong>$option</strong> 参数的 <strong>$value</strong>应该被设置成 <info>bool</info> 类型： 选项将 <strong>$value</strong> 设置为备注
                       <info>CURLOPT_AUTOREFERER</info><info>true</info> 时将根据 <return>Location:</return> 重定向时，自动设置 header 中的
                       <return>Referer:</return>信息。  <info>CURLOPT_COOKIESESSION</info> 设为 <info>true</info>  时将开启新的一次 cookie 会
                       话。它将强制 libcurl 忽略之前会话时存的其他 cookie。 libcurl 在默认状况下无论
                       是否为会话，都会储存、加载所有 cookie。会话 cookie 是指没有过期时间，只存活在
                       会话之中。  <info>CURLOPT_CERTINFO</info><info>true</info> 将在安全传输时输出 SSL 证书信息到 <return>STDERR</return>。
                       在 cURL 7.19.1 中添加。 需要开启 <info>CURLOPT_VERBOSE</info> 才有效。
                       <info>CURLOPT_CONNECT_ONLY</info><info>true</info> 将让库执行所有需要的代理、验证、连接过程，但不传输数
                       据。此选项用于 HTTP、SMTP 和 POP3。  在 7.15.2 中添加。 <info>CURLOPT_CRLF</info> 启用时将
                       Unix的换行符转换成回车换行符。  <info>CURLOPT_DNS_USE_GLOBAL_CACHE</info><info>true</info> 会启用一个全
                       局的DNS缓存。此选项非线程安全的，默认已开启。  <info>CURLOPT_FAILONERROR</info> 当 HTTP 状
                       态码大于等于 400，<info>true</info> 将将显示错误详情。 默认情况下将返回页面，忽略 HTTP 代
                       码。  <info>CURLOPT_SSL_FALSESTART</info><info>true</info>  开启 TLS False Start （一种 TLS 握手优化方
                       式）  cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。 <info>CURLOPT_FILETIME</info><info>true</info>  时，会
                       尝试获取远程文档中的修改时间信息。 信息可通过<strong>curl_getinfo()</strong>函数的
                       <strong>$CURLINFO_FILETIME</strong> 选项获取。  <info>CURLOPT_FOLLOWLOCATION</info><info>true</info> 时将会根据服务器返
                       回 HTTP 头中的 <return>"Location: "</return> 重定向。参阅 <info>CURLOPT_MAXREDIRS</info>。
                       <info>CURLOPT_FORBID_REUSE</info><info>true</info> 在完成交互以后强制明确的断开连接，不能在连接池中重
                       用。  <info>CURLOPT_FRESH_CONNECT</info><info>true</info> 强制获取一个新的连接，而不是缓存中的连接。
                       <info>CURLOPT_FTP_USE_EPRT</info><info>true</info> 时，当 FTP 下载时，使用 EPRT (和 LPRT)命令。 设置为
                       <info>false</info> 时禁用 EPRT 和 LPRT，仅仅使用PORT 命令。  <info>CURLOPT_FTP_USE_EPSV</info><info>true</info> 时，
                       在FTP传输过程中，回到 PASV 模式前，先尝试 EPSV 命令。设置为 <info>false</info> 时禁用
                       EPSV。  <info>CURLOPT_FTP_CREATE_MISSING_DIRS</info><info>true</info> 时，当 ftp 操作不存在的目录时将创
                       建它。  <info>CURLOPT_FTPAPPEND</info><info>true</info> 为追加写入文件，而不是覆盖。
                       <info>CURLOPT_TCP_NODELAY</info><info>true</info> 时禁用 TCP 的 Nagle 算法，就是减少网络上的小数据包数
                       量。  编译的版本在 libcurl 7.11.2 及以上时有效。
                       <info>CURLOPT_FTPASCII</info><info>CURLOPT_TRANSFERTEXT</info> 的别名。  <info>CURLOPT_FTPLISTONLY</info><info>true</info> 时只列
                       出 FTP 目录的名字。  <info>CURLOPT_HEADER</info> 启用时会将头文件的信息作为数据流输出。
                       <info>CURLINFO_HEADER_OUT</info><info>true</info> 时追踪句柄的请求字符串。 <info>CURLINFO_</info> 的前缀是指向的
                       （intentional）。 <info>CURLOPT_HTTP09_ALLOWED</info> 是否允许 HTTP/0.9 响应。从 libcurl
                       7.66.0 开始默认为 <info>false</info>；以前默认为 <info>true</info>。  如果编译的 libcurl 版本 &gt;=
                       7.64.0，则分别从 PHP 7.3.15 和 7.4.3 开始可用 <info>CURLOPT_HTTPGET</info><info>true</info>  时会设置
                       HTTP 的 method 为 GET，由于默认是 GET，所以只有 method 被修改时才需要这个选
                       项。  <info>CURLOPT_HTTPPROXYTUNNEL</info><info>true</info>  会通过指定的 HTTP 代理来传输。
                       <info>CURLOPT_HTTP_CONTENT_DECODING</info><info>false</info> 时获取原始 HTTP 响应主体。  如果编译的
                       libcurl &gt;= 7.16.2 时可用。 <info>CURLOPT_KEEP_SENDING_ON_ERROR</info><info>true</info> 时，如果返回
                       的 HTTP 代码等于或大于 300，则继续发送请求主体。默认操作是停止发送并关闭流或
                       连接。适用于手动 NTLM 身份验证。大多数应用程序不需要此选项。  如果编译的
                       libcurl &gt;= 7.51.0，则从 PHP 7.3.0 开始可用。 <info>CURLOPT_MUTE</info><info>true</info>  时将完全静
                       默，无论是何 cURL 函数。  在 cURL 7.15.5  中移出（可以使用
                       CURLOPT_RETURNTRANSFER 作为代替） <info>CURLOPT_NETRC</info><info>true</info>  时，在连接建立时，访问
                       ~/.netrc文件获取用户名和密码来连接远程站点。  <info>CURLOPT_NOBODY</info><info>true</info>  时将不输出
                       BODY 部分。同时 Mehtod 变成了 HEAD。修改为  <info>false</info> 时不会变成 GET。
                       <info>CURLOPT_NOPROGRESS</info><info>true</info> 时关闭 cURL 的传输进度。  PHP 默认自动设置此选项为
                       <info>true</info>，只有为了调试才需要改变设置。   <info>CURLOPT_NOSIGNAL</info><info>true</info> 时忽略所有的 cURL
                       传递给 PHP 进程的信号。在 SAPI 多线程传输时此项被默认启用，所以超时选项仍能使
                       用。  cURL 7.10时被加入。 <info>CURLOPT_PATH_AS_IS</info><info>true</info> 不处理 dot dot sequences
                       （即 ../ ）  cURL 7.42.0 时被加入。 PHP 7.0.7 起有效。 <info>CURLOPT_PIPEWAIT</info><info>true</info>
                       则等待 pipelining/multiplexing。  cURL 7.43.0 时被加入。 PHP 7.0.7 起有效。
                       <info>CURLOPT_POST</info><info>true</info> 时会发送 POST 请求，类型为：
                       <return>application/x-www-form-urlencoded</return>，是 HTML 表单提交时最常见的一种。
                       <info>CURLOPT_PUT</info><info>true</info> 时允许 HTTP 发送文件。要被 PUT 的文件必须在 <info>CURLOPT_INFILE</info>和
                       <info>CURLOPT_INFILESIZE</info> 中设置。  <info>CURLOPT_RETURNTRANSFER</info><info>true</info>  将<strong>curl_exec()</strong>获取的
                       信息以字符串返回，而不是直接输出。  <info>CURLOPT_SASL_IR</info><info>true</info> 开启，收到首包(first
                       packet)后发送初始的响应(initial response)。  cURL 7.31.10 中添加，自 PHP
                       7.0.7 起有效。 <info>CURLOPT_SSL_ENABLE_ALPN</info><info>false</info>  禁用 SSL 握手中的 ALPN (如果 SSL
                       后端的 libcurl 内建支持) 用于协商到 http2。  cURL 7.36.0 中增加， PHP 7.0.7
                       起有效。 <info>CURLOPT_SSL_ENABLE_NPN</info><info>false</info> 禁用 SSL 握手中的 NPN(如果 SSL 后端的
                       libcurl 内建支持)，用于协商到 http2。  cURL 7.36.0 中增加， PHP 7.0.7 起有
                       效。 <info>CURLOPT_SSL_VERIFYPEER</info><info>false</info>  禁止 cURL 验证对等证书（peer's
                       certificate）。要验证的交换证书可以在 <info>CURLOPT_CAINFO</info> 选项中设置，或在
                       <info>CURLOPT_CAPATH</info>中设置证书目录。  自cURL 7.10开始默认为 <info>true</info>。从 cURL 7.10开始
                       默认绑定安装。 <info>CURLOPT_SSL_VERIFYSTATUS</info><info>true</info> 验证证书状态。  cURL 7.41.0 中添
                       加， PHP 7.0.7 起有效。 <info>CURLOPT_PROXY_SSL_VERIFYPEER</info><info>false</info> 会阻止 CURL 验证对
                       等证书（peer's certificate）。可以使用 <info>CURLOPT_CAINFO</info> 选项指定要验证的备用证
                       书，或者可以使用 <info>CURLOPT_CAPATH</info> 选项指定证书目录。设置为 <info>false</info> 时，无论如何验
                       证对等证书都会成功。  默认为 <info>true</info>。自 PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0
                       起可用。 <info>CURLOPT_SAFE_UPLOAD</info> 始终为 <info>true</info>，在 <info>CURLOPT_POSTFIELDS</info> 中禁用了对上
                       传文件的 <return>@</return> 前缀的支持，这意味着以 <return>@</return> 开头的值可以作为字段安全地传递。上传可使
                       用 <class>CURLFile</class> 替代。  <info>CURLOPT_TCP_FASTOPEN</info><info>true</info> 开启 TCP Fast Open。  cURL
                       7.49.0 中添加， PHP 7.0.7 起有效。 <info>CURLOPT_TFTP_NO_OPTIONS</info><info>true</info> 不发送 TFTP 的
                       options 请求。  自 cURL 7.48.0 添加， PHP 7.0.7 起有效。
                       <info>CURLOPT_TRANSFERTEXT</info><info>true</info>  对 FTP 传输使用 ASCII 模式。对于LDAP，它检索纯文本
                       信息而非 HTML。在 Windows 系统上，系统不会把 <return>STDOUT</return> 设置成二进制 模式。
                       <info>CURLOPT_UNRESTRICTED_AUTH</info><info>true</info> 在使用<info>CURLOPT_FOLLOWLOCATION</info>重定向 header 中的
                       多个 location 时继续发送用户名和密码信息，哪怕主机名已改变。
                       <info>CURLOPT_UPLOAD</info><info>true</info>  准备上传。  <info>CURLOPT_VERBOSE</info><info>true</info> 会输出所有的信息，写入到
                       <return>STDERR</return>，或在<info>CURLOPT_STDERR</info>中指定的文件。
                       
                       <info>true</info> 时关闭 cURL 的传输进度。  PHP 默认自动设置此选项为 <info>true</info>，只有为了调试才
                       需要改变设置。
                       
                       PHP 默认自动设置此选项为 <info>true</info>，只有为了调试才需要改变设置。
                       
                       以下 <strong>$option</strong> 的 <strong>$value</strong> 应该被设置成 <info>int</info>： 选项设置 <strong>$value</strong> 为备注
                       <info>CURLOPT_BUFFERSIZE</info> 每次读入的缓冲的尺寸。当然不保证每次都会完全填满这个尺寸。
                       在cURL 7.10中被加入。 <info>CURLOPT_CONNECTTIMEOUT</info> 在尝试连接时等待的秒数。设置为
                       0，则无限等待。  <info>CURLOPT_CONNECTTIMEOUT_MS</info> 尝试连接等待的时间，以毫秒为单位。
                       设置为0，则无限等待。   如果 libcurl 编译时使用系统标准的名称解析器（
                       standard system name resolver），那部分的连接仍旧使用以秒计的超时解决方案，最
                       小超时时间还是一秒钟。  在 cURL 7.16.2 中被加入。 <info>CURLOPT_DNS_CACHE_TIMEOUT</info>
                       设置在内存中缓存 DNS 的时间，默认为120秒（两分钟）。
                       <info>CURLOPT_EXPECT_100_TIMEOUT_MS</info> 超时预计： 100毫秒内的 continue 响应 默认为
                       1000 毫秒。  cURL 7.36.0 中添加，自 PHP 7.0.7 有效。 <info>CURLOPT_FTPSSLAUTH</info> FTP验
                       证方式（启用的时候）：<return>CURLFTPAUTH_SSL</return> (首先尝试SSL)，<return>CURLFTPAUTH_TLS</return> (首先尝
                       试TLS)或<return>CURLFTPAUTH_DEFAULT</return> (让cURL 自个儿决定)。  在 cURL 7.12.2 中被加入。
                       <info>CURLOPT_HEADEROPT</info> How to deal with headers. One of the following constants:
                       <info>CURLHEADER_UNIFIED</info>: the headers specified in <info>CURLOPT_HTTPHEADER</info> will be used
                       in requests both to servers and proxies. With this option enabled,
                       <info>CURLOPT_PROXYHEADER</info> will not have any effect.  <info>CURLHEADER_SEPARATE</info>: makes
                       <info>CURLOPT_HTTPHEADER</info> headers only get sent to a server and not to a proxy.
                       Proxy headers must be set with <info>CURLOPT_PROXYHEADER</info> to get used. Note that if
                       a non-CONNECT request is sent to a proxy, libcurl will send both server
                       headers and proxy headers. When doing CONNECT, libcurl will send
                       <info>CURLOPT_PROXYHEADER</info> headers only to the proxy and then <info>CURLOPT_HTTPHEADER</info>
                       headers only to the server.   Defaults to <info>CURLHEADER_SEPARATE</info> as of cURL
                       7.42.1, and <info>CURLHEADER_UNIFIED</info> before.   Added in cURL 7.37.0. Available
                       since PHP 7.0.7. <info>CURLOPT_HTTP_VERSION</info><strong>$CURL_HTTP_VERSION_NONE</strong> (默认值，让 cURL
                       自己判断使用哪个版本)，<strong>$CURL_HTTP_VERSION_1_0</strong> (强制使用 HTTP/1.0)或
                       <strong>$CURL_HTTP_VERSION_1_1</strong> (强制使用 HTTP/1.1)。  <info>CURLOPT_HTTPAUTH</info> 使用的 HTTP 验
                       证方法。选项有： <strong>$CURLAUTH_BASIC</strong>、 <strong>$CURLAUTH_DIGEST</strong>、
                       <strong>$CURLAUTH_GSSNEGOTIATE</strong>、 <strong>$CURLAUTH_NTLM</strong>、 <info>CURLAUTH_AWS_SIGV4</info>、 <strong>$CURLAUTH_ANY</strong>
                       和 <strong>$CURLAUTH_ANYSAFE</strong>。  可以使用 <return>|</return> 位域（OR）操作符结合多个值，cURL 会让服务
                       器选择受支持的方法，并选择最好的那个。 <info>CURLAUTH_ANY</info> 设置所有的位。cURL 将自动
                       选择它认为最安全的一个。 <info>CURLAUTH_ANYSAFE</info> 设置了除 <return>CURLAUTH_BASIC</return> 以外所有的
                       位。cURL 将自动选择它认为最安全的一个。  <info>CURLOPT_INFILESIZE</info> 希望传给远程站点
                       的文件尺寸，字节(byte)为单位。 注意无法用这个选项阻止 libcurl 发送更多的数
                       据，确切发送什么取决于 <info>CURLOPT_READFUNCTION</info>。  <info>CURLOPT_LOW_SPEED_LIMIT</info> 传输速
                       度，每秒字节（bytes）数，根据<info>CURLOPT_LOW_SPEED_TIME</info>秒数统计是否因太慢而取消传
                       输。  <info>CURLOPT_LOW_SPEED_TIME</info> 当传输速度小于<info>CURLOPT_LOW_SPEED_LIMIT</info>时
                       (bytes/sec)，PHP会判断是否因太慢而取消传输。  <info>CURLOPT_MAIL_RCPT_ALLLOWFAILS</info>
                       允许一些收件人的 RCPT TO 命令失败。  在向多个收件人发送数据时，如果至少有一个
                       收件人导致 RCPT TO 命令返回错误，默认情况下 cURL 将中止 SMTP 对话。此选项告诉
                       cURL 忽略错误并继续使用剩余的有效收件人。如果所有收件人触发 RCPT TO 失败并且
                       设置了此 flag，cURL 将中止 SMTP 对话并返回从最后一个 RCPT TO 命令收到的错误。
                       <info>CURLOPT_MAXAGE_CONN</info> 重新使用已存在连接时允许的最大空闲时间。默认最大时间设置
                       为 <return>118</return> 秒。  <info>CURLOPT_MAXFILESIZE_LARGE</info> The maximum file size in bytes allowed
                       to download. If the file requested is found larger than this value, the
                       transfer will not start and <info>CURLE_FILESIZE_EXCEEDED</info> will be returned. The
                       file size is not always known prior to download, and for such files this
                       option has no effect even if the file transfer ends up being larger than this
                       given limit.  <info>CURLOPT_MAXLIFETIME_CONN</info> The maximum time in seconds, since the
                       creation of the connection, that is allowed for an existing connection to
                       have for it to be considered for reuse. If a connection is found in the cache
                       that is older than this value, it will instead be closed once any in-progress
                       transfers are complete. Default is 0 seconds, meaning the option is disabled
                       and all connections are eligible for reuse.  <info>CURLOPT_MAXCONNECTS</info> 允许的最大持
                       久连接数。当达到限制时，将会关闭缓存中最早的连接，以防止增加已打开的连接数。
                       <info>CURLOPT_MAXREDIRS</info> 指定最多的 HTTP 重定向次数，这个选项是和
                       <info>CURLOPT_FOLLOWLOCATION</info> 一起使用的。 默认值 <return>20</return> 是为了防止无限重定向。设置为 <return>-1</return>
                       允许无限重定向，<return>0</return> 拒绝所有重定向。  <info>CURLOPT_PORT</info> 用来指定连接端口。
                       <info>CURLOPT_POSTREDIR</info> 位掩码， 1 (301 永久重定向), 2 (302 Found) 和 4 (303 See
                       Other)  设置 <info>CURLOPT_FOLLOWLOCATION</info> 时，什么情况下需要再次  HTTP POST 到重定
                       向网址。  cURL 7.19.1 中添加。 <info>CURLOPT_PROTOCOLS</info><info>CURLPROTO_*</info>的位掩码。 启用
                       时，会限制 libcurl 在传输过程中可使用哪些协议。 这将允许你在编译libcurl时支持
                       众多协议，但是限制只用允许的子集。默认 libcurl 将使用所有支持的协议。 参见
                       <info>CURLOPT_REDIR_PROTOCOLS</info>。  可用的协议选项为： <strong>$CURLPROTO_HTTP</strong>、
                       <strong>$CURLPROTO_HTTPS</strong>、 <strong>$CURLPROTO_FTP</strong>、 <strong>$CURLPROTO_FTPS</strong>、 <strong>$CURLPROTO_SCP</strong>、
                       <strong>$CURLPROTO_SFTP</strong>、 <strong>$CURLPROTO_TELNET</strong>、 <strong>$CURLPROTO_LDAP</strong>、 <strong>$CURLPROTO_LDAPS</strong>、
                       <strong>$CURLPROTO_DICT</strong>、 <strong>$CURLPROTO_FILE</strong>、 <strong>$CURLPROTO_TFTP</strong>、 <info>CURLPROTO_MQTT</info>、
                       <strong>$CURLPROTO_ALL</strong>。  在 cURL 7.19.4 中被加入。 <info>CURLOPT_PROXYAUTH</info> HTTP 代理连接的
                       验证方式。使用在<info>CURLOPT_HTTPAUTH</info>中的位掩码。 当前仅仅支持 <strong>$CURLAUTH_BASIC</strong>和
                       <strong>$CURLAUTH_NTLM</strong>。  在 cURL 7.10.7 中被加入。 <info>CURLOPT_PROXYPORT</info> 代理服务器的端
                       口。端口也可以在<info>CURLOPT_PROXY</info>中设置。  <info>CURLOPT_PROXYTYPE</info> 可以是
                       <info>CURLPROXY_HTTP</info> (默认值)  <info>CURLPROXY_SOCKS4</info>、 <info>CURLPROXY_SOCKS5</info>、
                       <info>CURLPROXY_SOCKS4A</info> 或 <info>CURLPROXY_SOCKS5_HOSTNAME</info>。  在 cURL 7.10 中被加入。
                       <info>CURLOPT_REDIR_PROTOCOLS</info><info>CURLPROTO_*</info> 值的位掩码。如果被启用，位掩码会限制
                       libcurl 在 <info>CURLOPT_FOLLOWLOCATION</info>开启时，使用的协议。 默认允许除 FILE 和 SCP
                       外所有协议。 这和 7.19.4 前的版本无条件支持所有支持的协议不同。关于协议常量，
                       请参照<info>CURLOPT_PROTOCOLS</info>。  在 cURL 7.19.4 中被加入。 <info>CURLOPT_RESUME_FROM</info> 在恢
                       复传输时，传递字节为单位的偏移量（用来断点续传）。  <info>CURLOPT_SOCKS5_AUTH</info> 用于
                       SOCKS5 验证方法。选项是：<info>CURLAUTH_BASIC</info>、<info>CURLAUTH_GSSAPI</info>、<info>CURLAUTH_NONE</info>。  位
                       操作符 <return>|</return>（or）用于组合多个方法。如果这样做，cURL 将轮询服务器以查看它支持哪些
                       方法并选择最佳方法。 <info>CURLAUTH_BASIC</info> 允许用户名/密码验证。 <info>CURLAUTH_GSSAPI</info> 允
                       许 GSS-API 身份验证。 <info>CURLAUTH_NONE</info> 允许不验证。  默认为
                       <return>CURLAUTH_BASIC|CURLAUTH_GSSAPI</return>。使用 <info>CURLOPT_PROXYUSERPWD</info> 选项设置真实的用户
                       名和密码。  从 7.3.0 和 curl &gt;= 7.55.0 开始可用。 <info>CURLOPT_SSL_OPTIONS</info> Set
                       SSL behavior options, which is a bitmask of any of the following constants:
                       <info>CURLSSLOPT_ALLOW_BEAST</info>: do not attempt to use any workarounds for a security
                       flaw in the SSL3 and TLS1.0 protocols.  <info>CURLSSLOPT_NO_REVOKE</info>: disable
                       certificate revocation checks for those SSL backends where such behavior is
                       present.  <info>CURLSSLOPT_AUTO_CLIENT_CERT</info>: automatically locate and use a client
                       certificate for authentication, when requested by the server. This option is
                       only supported for Schannel (the native Windows SSL library).
                       <info>CURLSSLOPT_NATIVE_CA</info>: use the operating system's native CA store for
                       certificate verification. Works only on Windows when built to use OpenSSL.
                       This option is experimental and behavior is subject to change.
                       <info>CURLSSLOPT_NO_PARTIALCHAIN</info>: do not accept "partial" certificate chains, which
                       cURL otherwise does by default. This option is only supported for OpenSSL and
                       will fail the certificate verification if the chain ends with an intermediate
                       certificate and not with a root certificate.  <info>CURLSSLOPT_REVOKE_BEST_EFFORT</info>:
                       ignore certificate revocation checks in case of missing or offline
                       distribution points for those SSL backends where such behavior is present.
                       This option is only supported for Schannel (the native Windows SSL library).
                       If combined with <info>CURLSSLOPT_NO_REVOKE</info>, the latter takes precedence.   Added
                       in cURL 7.25.0. Available since PHP 7.0.7. <info>CURLOPT_SSL_VERIFYHOST</info><return>2</return> 时验证 SSL
                       对等证书中的公用名称字段或主题备用名称（Subject Alternate Name，简称 SNA）字
                       段是否与提供的主机名匹配。<return>0</return> 时不检查名称。不应使用 <return>1</return>。在生产环境中，此选项的
                       值应保持为 <return>2</return>（默认值）。  在 cURL 7.28.1 中移除了对 <return>1</return> 的支持。
                       <info>CURLOPT_SSLVERSION</info><info>CURL_SSLVERSION_DEFAULT</info> (0)、<info>CURL_SSLVERSION_TLSv1</info> (1)、
                       <info>CURL_SSLVERSION_SSLv2</info> (2)、<info>CURL_SSLVERSION_SSLv3</info> (3)、<info>CURL_SSLVERSION_TLSv1_0</info>
                       (4)、<info>CURL_SSLVERSION_TLSv1_1</info> (5) 、<info>CURL_SSLVERSION_TLSv1_2</info> (6) 或
                       <info>CURL_SSLVERSION_TLSv1_3</info> (7) 中的其中一个。  最好别设置这个值并让它使用默认
                       值。鉴于 SSLv2 和 SSLv3 中的已知漏洞，将其设置为 2 或 3 非常危险。
                       <info>CURLOPT_PROXY_SSL_OPTIONS</info> 设置代理 SSL 行为选项，它是以下任何常量的位掩码：
                       <info>CURLSSLOPT_ALLOW_BEAST</info>：不要尝试对 SSL3 和 TLS1.0 协议中的安全漏洞使用任何替
                       代方法。  <info>CURLSSLOPT_NO_REVOKE</info>：对存在此类行为的 SSL 后端禁用证书吊销检查。
                       （curl &gt;= 7.44.0）  <info>CURLSSLOPT_NO_PARTIALCHAIN</info>：不接受“部分”（partial）证
                       书链，不然默认接受。（curl &gt;= 7.68.0）   自 PHP 7.3.0 和 libcurl &gt;=
                       cURL 7.52.0 起可用。 <info>CURLOPT_PROXY_SSL_VERIFYHOST</info> 设置为 <return>2</return> 以根据代理名称验证
                       HTTPS 代理的证书名称字段。设置为 <return>0</return> 时，无论证书中使用的名称如何，连接都会成
                       功。谨慎使用该能力！ 在 curl 7.28.0 及更早版本中 <return>1</return> 视为调试选项。从 curl
                       7.28.1 到 7.65.3 返回 <info>CURLE_BAD_FUNCTION_ARGUMENT</info>。 从 curl 7.66.0 开始，<return>1</return> 和
                       <return>2</return> 被视为相同的值。在生产环境中，此选项的值应保持为 <return>2</return>（默认值）。  自 PHP
                       7.3.0 和 libcurl &gt;= cURL 7.52.0 起可用。
                       <info>CURLOPT_PROXY_SSLVERSION</info><info>CURL_SSLVERSION_DEFAULT</info>、<info>CURL_SSLVERSION_TLSv1</info>、
                       <info>CURL_SSLVERSION_TLSv1_0</info>、<info>CURL_SSLVERSION_TLSv1_1</info>、<info>CURL_SSLVERSION_TLSv1_2</info>、
                       <info>CURL_SSLVERSION_TLSv1_3</info>、<info>CURL_SSLVERSION_MAX_DEFAULT</info>、
                       <info>CURL_SSLVERSION_MAX_TLSv1_0</info>、<info>CURL_SSLVERSION_MAX_TLSv1_1</info>、
                       <info>CURL_SSLVERSION_MAX_TLSv1_2</info>、<info>CURL_SSLVERSION_MAX_TLSv1_3</info> 或
                       <info>CURL_SSLVERSION_SSLv3</info> 其中之一。  最好的办法是不要设置它，使用默认的
                       <info>CURL_SSLVERSION_DEFAULT</info>，这将尝试找出远程 SSL 协议版本。   自 PHP 7.3.0 和
                       libcurl &gt;= cURL 7.52.0 起可用。 <info>CURLOPT_STREAM_WEIGHT</info> 设置 stream weight
                       数值 ( 1 和 256 之间的数字).  cURL 7.46.0 中添加，自 PHP 7.0.7 起有效。
                       <info>CURLOPT_TCP_KEEPALIVE</info> 如果设置为 <return>1</return>，将发送 TCP keepalive 探针。这些探针的延迟
                       和频率可以通过 <info>CURLOPT_TCP_KEEPIDLE</info> 和 <info>CURLOPT_TCP_KEEPINTVL</info> 选项来控制，前提
                       是操作系统支持它们。如果设置为 <return>0</return>（默认值），将禁用 keepalive 探针。  在 cURL
                       7.25.0 中添加。 <info>CURLOPT_TCP_KEEPIDLE</info> 设置延迟（以秒为单位），如果启用了
                       <info>CURLOPT_TCP_KEEPALIVE</info>，操作系统将在连接空闲时等待，然后再发送 keepalive 探
                       针。并非所有操作系统都支持此选项。默认值为 <return>60</return>。  在 cURL 7.25.0 中添加。
                       <info>CURLOPT_TCP_KEEPINTVL</info> 设置间隔（以秒为单位），如果启用了
                       <info>CURLOPT_TCP_KEEPALIVE</info>，操作系统将在发送 keepalive 探针之间等待。并非所有操作
                       系统都支持此选项。默认值为 <return>60</return>。  在 cURL 7.25.0 中添加。
                       <info>CURLOPT_TIMECONDITION</info> 设置如何对待 <info>CURLOPT_TIMEVALUE</info>。 使用
                       <strong>$CURL_TIMECOND_IFMODSINCE</strong>，仅在页面 <info>CURLOPT_TIMEVALUE</info> 之后修改，才返回页面。
                       没有修改则返回 <return>"304 Not Modified"</return> 头，假设设置了 <info>CURLOPT_HEADER</info> 为 <info>true</info>。
                       <strong>$CURL_TIMECOND_IFUNMODSINCE</strong> 则起相反的效果。使用 <info>CURL_TIMECOND_NONE</info> 忽略
                       <info>CURLOPT_TIMEVALUE</info> 并始终返回页面。默认为 <strong>$CURL_TIMECOND_IFMODSINCE</strong>。  在 cURL
                       7.46.0 之前，默认值为 <info>CURL_TIMECOND_IFMODSINCE</info>。 <info>CURLOPT_TIMEOUT</info> 允许 cURL 函
                       数执行的最长秒数。  <info>CURLOPT_TIMEOUT_MS</info> 设置cURL允许执行的最长毫秒数。   如果
                       libcurl 编译时使用系统标准的名称解析器（ standard system name resolver），那
                       部分的连接仍旧使用以秒计的超时解决方案，最小超时时间还是一秒钟。  在 cURL
                       7.16.2 中被加入。 <info>CURLOPT_TIMEVALUE</info> 秒数，从 1970年1月1日开始。这个时间将由
                       <info>CURLOPT_TIMECONDITION</info> 使用。  <info>CURLOPT_UPKEEP_INTERVAL_MS</info> Some protocols have
                       "connection upkeep" mechanisms. These mechanisms usually send some traffic on
                       existing connections in order to keep them alive. This option defines the
                       connection upkeep interval. Currently, the only protocol with a connection
                       upkeep mechanism is HTTP/2. When the connection upkeep interval is exceeded,
                       an HTTP/2 PING frame is sent on the connection. Default is <return>60</return> seconds.
                       <info>CURLOPT_UPLOAD_BUFFERSIZE</info> Preferred buffer size in bytes for the cURL upload
                       buffer. The upload buffer size by default is 64 kilobytes. The maximum buffer
                       size allowed to be set is 2 megabytes. The minimum buffer size allowed to be
                       set is 16 kilobytes.  <info>CURLOPT_MAX_RECV_SPEED_LARGE</info> 如果下载速度超过了此速度
                       (以每秒字节数来统计) ，即传输过程中累计的平均数，传输就会降速到这个参数的值。
                       默认不限速。  cURL 7.15.5 中添加。 <info>CURLOPT_MAX_SEND_SPEED_LARGE</info> 如果上传的速
                       度超过了此速度(以每秒字节数来统计)，即传输过程中累计的平均数  ，传输就会降速
                       到这个参数的值。默认不限速。  cURL 7.15.5 中添加。 <info>CURLOPT_SSH_AUTH_TYPES</info> A
                       bitmask consisting of one or more of  <info>CURLSSH_AUTH_PUBLICKEY</info>,
                       <info>CURLSSH_AUTH_PASSWORD</info>,  <info>CURLSSH_AUTH_HOST</info>,  <info>CURLSSH_AUTH_KEYBOARD</info>. Set to
                       <info>CURLSSH_AUTH_ANY</info> to let libcurl pick one.  cURL 7.16.1 中添加。
                       <info>CURLOPT_IPRESOLVE</info> 允许程序选择想要解析的 IP 地址类别。只有在地址有多种 ip 类
                       别的时候才能用，可以的值有： <info>CURL_IPRESOLVE_WHATEVER</info>、 <info>CURL_IPRESOLVE_V4</info>、
                       <info>CURL_IPRESOLVE_V6</info>，默认是 <info>CURL_IPRESOLVE_WHATEVER</info>。  cURL 7.10.8 中添加。
                       <info>CURLOPT_FTP_FILEMETHOD</info> 告诉 curl 使用哪种方式来获取 FTP(s) 服务器上的文件。可
                       能的值有： <info>CURLFTPMETHOD_DEFAULT</info>、 <info>CURLFTPMETHOD_MULTICWD</info>、
                       <info>CURLFTPMETHOD_NOCWD</info> 和 <info>CURLFTPMETHOD_SINGLECWD</info>。  cURL 7.15.1 中添加。
                       
                       <info>CURLHEADER_UNIFIED</info>: the headers specified in <info>CURLOPT_HTTPHEADER</info> will be used
                       in requests both to servers and proxies. With this option enabled,
                       <info>CURLOPT_PROXYHEADER</info> will not have any effect.
                       
                       <info>CURLHEADER_SEPARATE</info>: makes <info>CURLOPT_HTTPHEADER</info> headers only get sent to a
                       server and not to a proxy. Proxy headers must be set with <info>CURLOPT_PROXYHEADER</info>
                       to get used. Note that if a non-CONNECT request is sent to a proxy, libcurl
                       will send both server headers and proxy headers. When doing CONNECT, libcurl
                       will send <info>CURLOPT_PROXYHEADER</info> headers only to the proxy and then
                       <info>CURLOPT_HTTPHEADER</info> headers only to the server.
                       
                       Defaults to <info>CURLHEADER_SEPARATE</info> as of cURL 7.42.1, and <info>CURLHEADER_UNIFIED</info>
                       before.
                       
                       使用的 HTTP 验证方法。选项有： <strong>$CURLAUTH_BASIC</strong>、 <strong>$CURLAUTH_DIGEST</strong>、
                       <strong>$CURLAUTH_GSSNEGOTIATE</strong>、 <strong>$CURLAUTH_NTLM</strong>、 <info>CURLAUTH_AWS_SIGV4</info>、 <strong>$CURLAUTH_ANY</strong>
                       和 <strong>$CURLAUTH_ANYSAFE</strong>。
                       
                       可以使用 <return>|</return> 位域（OR）操作符结合多个值，cURL 会让服务器选择受支持的方法，并选
                       择最好的那个。
                       
                       <info>CURLAUTH_ANY</info> 设置所有的位。cURL 将自动选择它认为最安全的一个。
                       
                       <info>CURLAUTH_ANYSAFE</info> 设置了除 <return>CURLAUTH_BASIC</return> 以外所有的位。cURL 将自动选择它认为
                       最安全的一个。
                       
                       <info>CURLPROTO_*</info>的位掩码。 启用时，会限制 libcurl 在传输过程中可使用哪些协议。 这
                       将允许你在编译libcurl时支持众多协议，但是限制只用允许的子集。默认 libcurl 将
                       使用所有支持的协议。 参见<info>CURLOPT_REDIR_PROTOCOLS</info>。
                       
                       可用的协议选项为： <strong>$CURLPROTO_HTTP</strong>、 <strong>$CURLPROTO_HTTPS</strong>、 <strong>$CURLPROTO_FTP</strong>、
                       <strong>$CURLPROTO_FTPS</strong>、 <strong>$CURLPROTO_SCP</strong>、 <strong>$CURLPROTO_SFTP</strong>、 <strong>$CURLPROTO_TELNET</strong>、
                       <strong>$CURLPROTO_LDAP</strong>、 <strong>$CURLPROTO_LDAPS</strong>、 <strong>$CURLPROTO_DICT</strong>、 <strong>$CURLPROTO_FILE</strong>、
                       <strong>$CURLPROTO_TFTP</strong>、 <info>CURLPROTO_MQTT</info>、 <strong>$CURLPROTO_ALL</strong>。
                       
                       用于 SOCKS5 验证方法。选项是：<info>CURLAUTH_BASIC</info>、<info>CURLAUTH_GSSAPI</info>、
                       <info>CURLAUTH_NONE</info>。
                       
                       位操作符 <return>|</return>（or）用于组合多个方法。如果这样做，cURL 将轮询服务器以查看它支持哪
                       些方法并选择最佳方法。
                       
                       <info>CURLAUTH_BASIC</info> 允许用户名/密码验证。
                       
                       <info>CURLAUTH_GSSAPI</info> 允许 GSS-API 身份验证。
                       
                       <info>CURLAUTH_NONE</info> 允许不验证。
                       
                       默认为 <return>CURLAUTH_BASIC|CURLAUTH_GSSAPI</return>。使用 <info>CURLOPT_PROXYUSERPWD</info> 选项设置真实
                       的用户名和密码。
                       
                       <info>CURLSSLOPT_ALLOW_BEAST</info>: do not attempt to use any workarounds for a security
                       flaw in the SSL3 and TLS1.0 protocols.
                       
                       <info>CURLSSLOPT_NO_REVOKE</info>: disable certificate revocation checks for those SSL
                       backends where such behavior is present.
                       
                       <info>CURLSSLOPT_AUTO_CLIENT_CERT</info>: automatically locate and use a client
                       certificate for authentication, when requested by the server. This option is
                       only supported for Schannel (the native Windows SSL library).
                       
                       <info>CURLSSLOPT_NATIVE_CA</info>: use the operating system's native CA store for
                       certificate verification. Works only on Windows when built to use OpenSSL.
                       This option is experimental and behavior is subject to change.
                       
                       <info>CURLSSLOPT_NO_PARTIALCHAIN</info>: do not accept "partial" certificate chains, which
                       cURL otherwise does by default. This option is only supported for OpenSSL and
                       will fail the certificate verification if the chain ends with an intermediate
                       certificate and not with a root certificate.
                       
                       <info>CURLSSLOPT_REVOKE_BEST_EFFORT</info>: ignore certificate revocation checks in case
                       of missing or offline distribution points for those SSL backends where such
                       behavior is present. This option is only supported for Schannel (the native
                       Windows SSL library). If combined with <info>CURLSSLOPT_NO_REVOKE</info>, the latter takes
                       precedence.
                       
                       最好别设置这个值并让它使用默认值。鉴于 SSLv2 和 SSLv3 中的已知漏洞，将其设置
                       为 2 或 3 非常危险。
                       
                       <info>CURLSSLOPT_ALLOW_BEAST</info>：不要尝试对 SSL3 和 TLS1.0 协议中的安全漏洞使用任何替
                       代方法。
                       
                       <info>CURLSSLOPT_NO_REVOKE</info>：对存在此类行为的 SSL 后端禁用证书吊销检查。（curl &gt;=
                       7.44.0）
                       
                       <info>CURLSSLOPT_NO_PARTIALCHAIN</info>：不接受“部分”（partial）证书链，不然默认接受。
                       （curl &gt;= 7.68.0）
                       
                       最好的办法是不要设置它，使用默认的 <info>CURL_SSLVERSION_DEFAULT</info>，这将尝试找出远程
                       SSL 协议版本。
                       
                       对于下面的这些<strong>$option</strong>，<strong>$value</strong>应该被设置成 <info>string</info>： 选项设置的<strong>$value</strong>备注
                       <info>CURLOPT_ALTSVC</info> Pass the filename for cURL to use as the Alt-Svc cache file to
                       read existing cache contents from and possibly also write it back to a after
                       a transfer, unless <info>CURLALTSVC_READONLYFILE</info> is set via <info>CURLOPT_ALTSVC_CTRL</info>.
                       <info>CURLOPT_ALTSVC_CTRL</info> Populate the bitmask with the correct set of features to
                       instruct cURL how to handle Alt-Svc for the transfers using this handle. cURL
                       only accepts Alt-Svc headers over HTTPS. It will also only complete a request
                       to an alternative origin if that origin is properly hosted over HTTPS.
                       Setting any bit will enable the alt-svc engine. The options are:
                       <info>CURLALTSVC_H1</info>, <info>CURLALTSVC_H2</info>, <info>CURLALTSVC_H3</info>, and <info>CURLALTSVC_READONLYFILE</info>.
                       <info>CURLOPT_AWS_SIGV4</info> Provides AWS V4 signature authentication on HTTP(S) header.
                       This option overrides any other authentication types that have been set in
                       <info>CURLOPT_HTTPAUTH</info>. This method cannot be combined with other authentication
                       types.  <info>CURLOPT_CAINFO</info> 一个保存着1个或多个用来让服务端验证的证书的文件名。这
                       个参数仅仅在和<info>CURLOPT_SSL_VERIFYPEER</info>一起使用时才有意义。            .  可能需
                       要绝对路径。 <info>CURLOPT_CAINFO_BLOB</info> The name of a PEM file holding one or more
                       certificates to verify the peer with. This option overrides <info>CURLOPT_CAINFO</info>.
                       Available as of PHP 8.2.0 and cURL 7.77.0 <info>CURLOPT_CAPATH</info> 一个保存着多个CA证书
                       的目录。这个选项是和<info>CURLOPT_SSL_VERIFYPEER</info>一起使用的。  <info>CURLOPT_COOKIE</info> 设定
                       HTTP 请求中<return>"Cookie: "</return>部分的内容。多个 cookie 用分号分隔，分号后带一个空格(例
                       如， "<return>fruit=apple; colour=red</return>")。  <info>CURLOPT_COOKIEFILE</info> 包含 cookie 数据的文件
                       名，cookie 文件的格式可以是 Netscape 格式，或者只是纯 HTTP 头部风格，存入文
                       件。如果文件名是空的，不会加载 cookie，但 cookie 的处理仍旧启用。
                       <info>CURLOPT_COOKIEJAR</info> 连接结束后，比如，调用 curl_close 后，保存 cookie 信息的文
                       件。  <info>CURLOPT_COOKIELIST</info> cookie 字符串（即 Netscape/Mozilla 的单行格式，或常
                       规 HTTP 样式的 Set-Cookie 头）将单个 cookie 添加到内部 cookie 存储中。 <return>"ALL"</return>
                       擦除内存中保存的所有 cookie。 <return>"SESS"</return> 擦除内存中保存的所有会话 cookie。
                       <return>"FLUSH"</return> 将所有已知的 cookie 写入到 <info>CURLOPT_COOKIEJAR</info> 指定的文件。 <return>"RELOAD"</return> 从
                       <info>CURLOPT_COOKIEFILE</info> 指定的文件中加载所有 cookie。  自 cURL 7.14.1 起可用。
                       <info>CURLOPT_CUSTOMREQUEST</info> HTTP 请求时，使用自定义的 Method 来代替<return>"GET"</return>或<return>"HEAD"</return>。
                       对 <return>"DELETE"</return> 或者其他更隐蔽的 HTTP 请求有用。 有效值如 <return>"GET"</return>，<return>"POST"</return>，
                       <return>"CONNECT"</return>等等；也就是说，不要在这里输入整行 HTTP 请求。例如输入<return>"GET
                       /index.html HTTP/1.0\r\n\r\n"</return>是不正确的。  不确定服务器支持这个自定义方法则不
                       要使用它。   <info>CURLOPT_DEFAULT_PROTOCOL</info> URL不带协议的时候，使用的默认协议。
                       cURL 7.45.0 中添加，自 PHP 7.0.7 起有效。 <info>CURLOPT_DNS_INTERFACE</info> Set the name
                       of the network interface that the DNS resolver should bind to. This must be
                       an interface name (not an address).  Added in cURL 7.33.0. Available since
                       PHP 7.0.7. <info>CURLOPT_DNS_LOCAL_IP4</info> Set the local IPv4 address that the resolver
                       should bind to. The argument should contain a single numerical IPv4 address
                       as a string.  Added in cURL 7.33.0. Available since PHP 7.0.7.
                       <info>CURLOPT_DNS_LOCAL_IP6</info> Set the local IPv6 address that the resolver should
                       bind to. The argument should contain a single numerical IPv6 address as a
                       string.  Added in cURL 7.33.0. Available since PHP 7.0.7. <info>CURLOPT_EGDSOCKET</info>
                       类似<info>CURLOPT_RANDOM_FILE</info>，除了一个Entropy Gathering Daemon套接字。
                       <info>CURLOPT_ENCODING</info> HTTP请求头中<return>"Accept-Encoding: "</return>的值。 这使得能够解码响应的内
                       容。 支持的编码有<return>"identity"</return>，<return>"deflate"</return>和<return>"gzip"</return>。如果为空字符串<return>""</return>，会发送所有
                       支持的编码类型。  在 cURL 7.10 中被加入。 <info>CURLOPT_FTPPORT</info> 这个值将被用来获取
                       供FTP"PORT"指令所需要的IP地址。 "PORT" 指令告诉远程服务器连接到我们指定的IP地
                       址。这个字符串可以是纯文本的IP地址、主机名、一个网络接口名（UNIX下）或者只是
                       一个'-'来使用默认的 IP 地址。  <info>CURLOPT_HSTS</info> HSTS (HTTP Strict Transport
                       Security) cache file name.  <info>CURLOPT_HSTS_CTRL</info> Controls HSTS (HTTP Strict
                       Transport Security) behavior. Populate the bitmask with the correct set of
                       features to instruct cURL how to handle HSTS for the transfers using this
                       handle. <info>CURLHSTS_ENABLE</info> enables the in-memory HSTS cache. If the HSTS cache
                       file is defined, set <info>CURLHSTS_READONLYFILE</info> to make the file read-only.
                       <info>CURLOPT_INTERFACE</info> 发送的网络接口（interface），可以是一个接口名、IP 地址或者
                       是一个主机名。  <info>CURLOPT_KEYPASSWD</info> 使用 <info>CURLOPT_SSLKEY</info>  或
                       <info>CURLOPT_SSH_PRIVATE_KEYFILE</info> 私钥时候的密码。  在 cURL 7.16.1 中添加。
                       <info>CURLOPT_KRB4LEVEL</info> KRB4 (Kerberos 4) 安全级别。下面的任何值都是有效的(从低到高
                       的顺序)：<return>"clear"</return>、<return>"safe"</return>、<return>"confidential"</return>、<return>"private".</return>。如果字符串以上这些，将
                       使用<return>"private"</return>。 这个选项设置为 <info>null</info> 时将禁用 KRB4 安全认证。目前 KRB4 安全认
                       证只能用于 FTP 传输。  <info>CURLOPT_LOGIN_OPTIONS</info> Can be used to set protocol
                       specific login options, such as the preferred authentication mechanism via
                       "AUTH=NTLM" or "AUTH=*", and should be used in conjunction with the
                       <info>CURLOPT_USERNAME</info> option.  Added in cURL 7.34.0. Available since PHP 7.0.7.
                       <info>CURLOPT_PINNEDPUBLICKEY</info> Set the pinned public key. The string can be the file
                       name of your pinned public key. The file format expected is "PEM" or "DER".
                       The string can also be any number of base64 encoded sha256 hashes preceded by
                       "sha256//" and separated by ";".  Added in cURL 7.39.0. Available since PHP
                       7.0.7. <info>CURLOPT_POSTFIELDS</info> 在 HTTP “POST”操作中要发送的所有数据。 这个参数可以
                       是 urlencoded 后的字符串，类似'<return>para1=val1&para2=val2&...</return>'，也可以使用一个以字
                       段名为键值，字段数据为值的数组。 如果<strong>$value</strong>是一个数组，<return>Content-Type</return>头将会被设
                       置成<return>multipart/form-data</return>。  可以使用 <class>CURLFile</class> 或 <class>CURLStringFile</class> 发送文件，在这
                       种情况下，<strong>$value</strong> 必须是数组。  <info>CURLOPT_PRIVATE</info> Any data that should be
                       associated with this cURL handle. This data can subsequently be retrieved
                       with the <info>CURLINFO_PRIVATE</info> option of <strong>curl_getinfo()</strong>. cURL does nothing with
                       this data. When using a cURL multi handle, this private data is typically a
                       unique key to identify a standard cURL handle.  Added in cURL 7.10.3.
                       <info>CURLOPT_PRE_PROXY</info> Set a <info>string</info> holding the host name or dotted numerical  IP
                       address to be used as the preproxy that curl connects to before  it connects
                       to the HTTP(S) proxy specified in the  <info>CURLOPT_PROXY</info> option for the upcoming
                       request. The preproxy can only be a SOCKS proxy and it should be prefixed
                       with <return>[scheme]://</return> to specify which kind of socks is used. A numerical IPv6
                       address must be written within [brackets]. Setting the preproxy to an empty
                       string explicitly disables the use of a preproxy.  To specify port number in
                       this string, append <return>:[port]</return> to the end of the host name. The proxy's port
                       number may optionally be  specified with the separate option
                       <info>CURLOPT_PROXYPORT</info>.  Defaults to using port 1080 for proxies if a port is not
                       specified.  自 PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0 起可用。 <info>CURLOPT_PROXY</info>
                       HTTP 代理通道。  <info>CURLOPT_PROXY_SERVICE_NAME</info> 代理验证服务的名称。  在 cURL
                       7.43.0 中添加了 HTTP 代理，在 cURL 7.49.0 中添加了 SOCKS5 代理。自 PHP 7.0.7
                       起可用。 <info>CURLOPT_PROXY_CAINFO</info> The path to proxy Certificate Authority (CA)
                       bundle. Set the path as a <info>string</info> naming a file holding one or more
                       certificates to verify the HTTPS proxy with. This option is for connecting to
                       an HTTPS proxy, not an HTTPS server. Defaults set to the system path where
                       libcurl's cacert bundle is assumed to be stored.  自 PHP 7.3.0 和 libcurl
                       &gt;= cURL 7.52.0 起可用。 <info>CURLOPT_PROXY_CAINFO_BLOB</info> The name of a PEM file
                       holding one or more certificates to verify the HTTPS proxy with. This option
                       is for connecting to an HTTPS proxy, not an HTTPS server. Defaults set to the
                       system path where libcurl's cacert bundle is assumed to be stored.  Available
                       as of PHP 8.2.0 and libcurl &gt;= cURL 7.77.0. <info>CURLOPT_PROXY_CAPATH</info> The
                       directory holding multiple CA certificates to verify the HTTPS proxy with.
                       自 PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0 起可用。 <info>CURLOPT_PROXY_CRLFILE</info> Set
                       the file name with the concatenation of CRL (Certificate Revocation List)  in
                       PEM format to use in the certificate validation that occurs during  the SSL
                       exchange.  自 PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0 起可用。
                       <info>CURLOPT_PROXY_KEYPASSWD</info> Set the string be used as the password required to
                       use the  <info>CURLOPT_PROXY_SSLKEY</info> private key. You never needed a  passphrase to
                       load a certificate but you need one to load your private key. This option is
                       for connecting to an HTTPS proxy, not an HTTPS server.  自 PHP 7.3.0 和
                       libcurl &gt;= cURL 7.52.0 起可用。 <info>CURLOPT_PROXY_PINNEDPUBLICKEY</info> Set the
                       pinned public key for HTTPS proxy. The string can be the file name  of your
                       pinned public key. The file format expected is "PEM" or "DER".  The string
                       can also be any number of base64 encoded sha256 hashes preceded by
                       "sha256//" and separated by ";"  自 PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0 起
                       可用。 <info>CURLOPT_PROXY_SSLCERT</info> The file name of your client certificate used to
                       connect to the HTTPS proxy.  The default format is "P12" on Secure Transport
                       and "PEM" on other engines,  and can be changed with
                       <info>CURLOPT_PROXY_SSLCERTTYPE</info>. With NSS or Secure Transport, this can also be the
                       nickname of the certificate  you wish to authenticate with as it is named in
                       the security database.  If you want to use a file from the current directory,
                       please precede it with  "./" prefix, in order to avoid confusion with a
                       nickname.  自 PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0 起可用。
                       <info>CURLOPT_PROXY_SSLCERTTYPE</info> The format of your client certificate used when
                       connecting to an HTTPS proxy. Supported formats are "PEM" and "DER", except
                       with Secure Transport.  OpenSSL (versions 0.9.3 and later) and Secure
                       Transport  (on iOS 5 or later, or OS X 10.7 or later) also support "P12" for
                       PKCS#12-encoded files. Defaults to "PEM".  自 PHP 7.3.0 和 libcurl &gt;= cURL
                       7.52.0 起可用。 <info>CURLOPT_PROXY_SSL_CIPHER_LIST</info> The list of ciphers to use for
                       the connection to the HTTPS proxy.  The list must be syntactically correct,
                       it consists of one or more cipher  strings separated by colons. Commas or
                       spaces are also acceptable separators  but colons are normally used, !, - and
                       + can be used as operators.  自 PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0 起可
                       用。 <info>CURLOPT_PROXY_TLS13_CIPHERS</info> The list of cipher suites to use for the TLS
                       1.3 connection to a proxy. The list must be syntactically correct, it
                       consists of one or more  cipher suite strings separated by colons. This
                       option is currently used  only when curl is built to use OpenSSL 1.1.1 or
                       later.  If you are using a different SSL backend you can try setting  TLS 1.3
                       cipher suites by using the <info>CURLOPT_PROXY_SSL_CIPHER_LIST</info> option.  自 PHP
                       7.3.0 和 libcurl &gt;= cURL 7.61.0 起可用。使用 OpenSSL &gt;= 1.1.1 编译时可
                       用。 <info>CURLOPT_PROXY_SSLKEY</info> The file name of your private key used for
                       connecting to the HTTPS proxy.  The default format is "PEM" and can be
                       changed with  <info>CURLOPT_PROXY_SSLKEYTYPE</info>.  (iOS and Mac OS X only) This option
                       is ignored if curl was built against Secure Transport.  自 PHP 7.3.0 和
                       libcurl &gt;= cURL 7.52.0 起可用。如果启用内置 TLS，则可用。
                       <info>CURLOPT_PROXY_SSLKEYTYPE</info> The format of your private key. Supported formats
                       are "PEM", "DER" and "ENG".  自 PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0 起可
                       用。 <info>CURLOPT_PROXY_TLSAUTH_PASSWORD</info> The password to use for the TLS
                       authentication method specified with the  <info>CURLOPT_PROXY_TLSAUTH_TYPE</info> option.
                       Requires that the  <info>CURLOPT_PROXY_TLSAUTH_USERNAME</info> option to also be set.  自
                       PHP 7.3.0 和 libcurl &gt;= cURL 7.52.0 起可用。 <info>CURLOPT_PROXY_TLSAUTH_TYPE</info>
                       The method of the TLS authentication used for the HTTPS connection. Supported
                       method is "SRP".  Secure Remote Password (SRP) authentication for TLS
                       provides mutual authentication  if both sides have a shared secret. To use
                       TLS-SRP, you must also set the  <info>CURLOPT_PROXY_TLSAUTH_USERNAME</info> and
                       <info>CURLOPT_PROXY_TLSAUTH_PASSWORD</info> options.   自 PHP 7.3.0 和 libcurl &gt;= cURL
                       7.52.0 起可用。 <info>CURLOPT_PROXY_TLSAUTH_USERNAME</info> The username to use for the
                       HTTPS proxy TLS authentication method specified with the
                       <info>CURLOPT_PROXY_TLSAUTH_TYPE</info> option. Requires that the
                       <info>CURLOPT_PROXY_TLSAUTH_PASSWORD</info> option to also be set.  自 PHP 7.3.0 和
                       libcurl &gt;= cURL 7.52.0 起可用。 <info>CURLOPT_PROXYUSERPWD</info> 一个用来连接到代理的
                       <return>"[username]:[password]"</return> 格式的字符串。  <info>CURLOPT_RANDOM_FILE</info> 一个被用来生成
                       SSL 随机数种子的文件名。  <info>CURLOPT_RANGE</info> 以<return>"X-Y"</return>的形式，其中X和Y都是可选项获取
                       数据的范围，以字节计。HTTP传输线程也支持几个这样的重复项中间用逗号分隔如
                       <return>"X-Y,N-M"</return>。  <info>CURLOPT_REFERER</info> 在HTTP请求头中<return>"Referer: "</return>的内容。
                       <info>CURLOPT_SASL_AUTHZID</info> The authorization identity (authzid) for the transfer.
                       Only applicable to the PLAIN SASL authentication mechanism where it is
                       optional. When not specified, only the authentication identity (authcid) as
                       specified by the username will be sent to the server, along with the
                       password. The server will derive the authzid from the authcid when not
                       provided, which it will then use internally.  <info>CURLOPT_SERVICE_NAME</info> 验证服务的
                       名称  cURL 7.43.0 起添加，自 PHP 7.0.7 有效。 <info>CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</info>
                       包含 32 位长的 16 进制数值。这个字符串应该是远程主机公钥（public key） 的 MD5
                       校验值。在不匹配的时候 libcurl 会拒绝连接。 此选项仅用于  SCP 和 SFTP 的传
                       输。  cURL 7.17.1 中添加。 <info>CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256</info> Base64-encoded
                       SHA256 hash of the remote host's public key. The transfer will fail if the
                       given hash does not match the hash the remote host provides.
                       <info>CURLOPT_SSH_PUBLIC_KEYFILE</info> The file name for your public key. If not used,
                       libcurl defaults to  $HOME/.ssh/id_dsa.pub if the HOME environment variable
                       is set,  and just "id_dsa.pub" in the current directory if HOME is not set.
                       Added in cURL 7.16.1.  <info>CURLOPT_SSH_PRIVATE_KEYFILE</info> The file name for your
                       private key. If not used, libcurl defaults to  $HOME/.ssh/id_dsa if the HOME
                       environment variable is set,  and just "id_dsa" in the current directory if
                       HOME is not set.  If the file is password-protected, set the password with
                       <info>CURLOPT_KEYPASSWD</info>.  Added in cURL 7.16.1.  <info>CURLOPT_SSL_CIPHER_LIST</info> 一个SSL的
                       加密算法列表。例如<return>RC4-SHA</return>和<return>TLSv1</return>都是可用的加密列表。  <info>CURLOPT_SSL_EC_CURVES</info> A
                       colon delimited list of elliptic curve algorithms. For example, <return>X25519:P-521</return>
                       is a valid list of two elliptic curves. This option defines the client's key
                       exchange algorithms in the SSL handshake, if the SSL backend cURL is built to
                       use supports it.  <info>CURLOPT_SSLCERT</info> 一个包含 PEM 格式证书的文件名。
                       <info>CURLOPT_SSLCERTPASSWD</info> 使用<info>CURLOPT_SSLCERT</info>证书需要的密码。
                       <info>CURLOPT_SSLCERTTYPE</info> 证书的类型。支持的格式有<return>"PEM"</return> (默认值), <return>"DER"</return>和<return>"ENG"</return>。
                       在 cURL 7.9.3中 被加入。 <info>CURLOPT_SSLENGINE</info> 用来在<info>CURLOPT_SSLKEY</info>中指定的SSL私
                       钥的加密引擎变量。  <info>CURLOPT_SSLENGINE_DEFAULT</info> 用来做非对称加密操作的变量。
                       <info>CURLOPT_SSLKEY</info> 包含 SSL 私钥的文件名。  <info>CURLOPT_SSLKEYPASSWD</info> 在
                       <info>CURLOPT_SSLKEY</info>中指定了的SSL私钥的密码。  由于这个选项包含了敏感的密码信息，记
                       得保证这个PHP脚本的安全。   <info>CURLOPT_SSLKEYTYPE</info><info>CURLOPT_SSLKEY</info>中规定的私钥的加
                       密类型，支持的密钥类型为<return>"PEM"</return>(默认值)、<return>"DER"</return>和<return>"ENG"</return>。  <info>CURLOPT_TLS13_CIPHERS</info>
                       用于 TLS 1.3 连接的加密套件列表。列表必须在语法上正确，它由一个或多个用冒号分
                       隔的加密套件字符串组成。当前仅当 curl 编译为使用 OpenSSL 1.1.1 或更高版本时才
                       使用此选项。如果使用不同的 SSL 后端，<info>CURLOPT_SSL_CIPHER_LIST</info> 选项设置 TLS 1.3
                       加密套件。  自 PHP 7.3.0 和 libcurl &gt;= cURL 7.61.0 起可用。使用 OpenSSL
                       &gt;= 1.1.1 编译时可用。 <info>CURLOPT_UNIX_SOCKET_PATH</info> 使用 Unix 套接字作为连接，
                       并用指定的 <info>string</info> 作为路径。  cURL 7.40.0 中添加， PHP 7.0.7 起有效。
                       <info>CURLOPT_URL</info> 需要获取的 URL 地址，也可以在<strong>curl_init()</strong> 初始化会话的时候。
                       <info>CURLOPT_USERAGENT</info> 在HTTP请求中包含一个<return>"User-Agent: "</return>头的字符串。
                       <info>CURLOPT_USERNAME</info> 用于身份验证的用户名。  cURL 7.19.1 中添加。
                       <info>CURLOPT_PASSWORD</info> 用于身份验证的密码。  cURL 7.19.1 中添加。 <info>CURLOPT_USERPWD</info>
                       传递一个连接中需要的用户名和密码，格式为：<return>"[username]:[password]"</return>。
                       <info>CURLOPT_XOAUTH2_BEARER</info> 指定 OAuth 2.0 access token。  cURL 7.33.0 中添加，自
                       PHP 7.0.7 添加。
                       
                       Provides AWS V4 signature authentication on HTTP(S) header.
                       
                       This option overrides any other authentication types that have been set in
                       <info>CURLOPT_HTTPAUTH</info>. This method cannot be combined with other authentication
                       types.
                       
                       HTTP 请求时，使用自定义的 Method 来代替<return>"GET"</return>或<return>"HEAD"</return>。对 <return>"DELETE"</return> 或者其他更
                       隐蔽的 HTTP 请求有用。 有效值如 <return>"GET"</return>，<return>"POST"</return>，<return>"CONNECT"</return>等等；也就是说，不要
                       在这里输入整行 HTTP 请求。例如输入<return>"GET /index.html HTTP/1.0\r\n\r\n"</return>是不正确
                       的。  不确定服务器支持这个自定义方法则不要使用它。
                       
                       不确定服务器支持这个自定义方法则不要使用它。
                       
                       URL不带协议的时候，使用的默认协议。
                       
                       Set the name of the network interface that the DNS resolver should bind to.
                       This must be an interface name (not an address).
                       
                       Set the local IPv4 address that the resolver should bind to. The argument
                       should contain a single numerical IPv4 address as a string.
                       
                       Set the local IPv6 address that the resolver should bind to. The argument
                       should contain a single numerical IPv6 address as a string.
                       
                       HSTS (HTTP Strict Transport Security) cache file name.
                       
                       Controls HSTS (HTTP Strict Transport Security) behavior. Populate the bitmask
                       with the correct set of features to instruct cURL how to handle HSTS for the
                       transfers using this handle. <info>CURLHSTS_ENABLE</info> enables the in-memory HSTS
                       cache. If the HSTS cache file is defined, set <info>CURLHSTS_READONLYFILE</info> to make
                       the file read-only.
                       
                       在 HTTP “POST”操作中要发送的所有数据。 这个参数可以是 urlencoded 后的字符串，
                       类似'<return>para1=val1&para2=val2&...</return>'，也可以使用一个以字段名为键值，字段数据为值的
                       数组。 如果<strong>$value</strong>是一个数组，<return>Content-Type</return>头将会被设置成<return>multipart/form-data</return>。
                       
                       可以使用 <class>CURLFile</class> 或 <class>CURLStringFile</class> 发送文件，在这种情况下，<strong>$value</strong> 必须是数
                       组。
                       
                       Secure Remote Password (SRP) authentication for TLS provides mutual
                       authentication  if both sides have a shared secret. To use TLS-SRP, you must
                       also set the  <info>CURLOPT_PROXY_TLSAUTH_USERNAME</info> and
                       <info>CURLOPT_PROXY_TLSAUTH_PASSWORD</info> options.
                       
                       在 <info>CURLOPT_SSLKEY</info>中指定了的SSL私钥的密码。  由于这个选项包含了敏感的密码信
                       息，记得保证这个PHP脚本的安全。
                       
                       由于这个选项包含了敏感的密码信息，记得保证这个PHP脚本的安全。
                       
                       以下<strong>$option</strong>，<strong>$value</strong>应该被设置成数组： 选项可选<strong>$value</strong>值备注<info>CURLOPT_CONNECT_TO</info>
                       连接到指定的主机和端口，替换 URL 中的主机和端口。接受指定字符串格式的数组：
                       <return>HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT</return>。  cURL 7.49.0 中添加， PHP 7.0.7
                       起有效。 <info>CURLOPT_HTTP200ALIASES</info> HTTP 200 响应码数组，数组中的响应码被认为是正
                       确的响应，而非错误。  在 cURL 7.10.3 中被加入。 <info>CURLOPT_HTTPHEADER</info> 设置 HTTP
                       头字段的数组。格式：  array('Content-type: text/plain', 'Content-length:
                       100')   <info>CURLOPT_POSTQUOTE</info> 在 FTP 请求执行完成后，在服务器上执行的一组array格
                       式的 FTP 命令。  <info>CURLOPT_PROXYHEADER</info> 传给代理的自定义 HTTP 头。  cURL 7.37.0
                       中添加，自 PHP 7.0.7 添加。 <info>CURLOPT_QUOTE</info> 一组先于 FTP 请求的在服务器上执行的
                       FTP命令。  <info>CURLOPT_RESOLVE</info> 提供自定义地址，指定了主机和端口。 包含主机、端口
                       和 ip 地址的字符串，组成 array 的，每个元素以冒号分隔。格式：
                       array("example.com:80:127.0.0.1")   在 cURL 7.21.3 中添加。
                       
                       以下 <strong>$option</strong>，<strong>$value</strong>应该被设置成流资源 （例如使用<strong>fopen()</strong>）： 选项可选<strong>$value</strong>值
                       <info>CURLOPT_FILE</info> 设置输出文件，默认为<return>STDOUT</return> (浏览器)。 <info>CURLOPT_INFILE</info> 上传文件时
                       需要读取的文件。 <info>CURLOPT_STDERR</info> 错误输出的地址，取代默认的<return>STDERR</return>。
                       <info>CURLOPT_WRITEHEADER</info> 设置 header 部分内容的写入的文件地址。
                       
                       以下<strong>$option</strong> 的 <strong>$value</strong>应该是有效的函数或者闭包： 选项设置 <strong>$value</strong> 为笔记
                       <info>CURLOPT_HEADERFUNCTION</info> 设置一个回调函数，这个函数有两个参数，第一个是cURL的资
                       源句柄，第二个是输出的 header 数据。header数据的输出必须依赖这个函数，返回已
                       写入的数据大小。 <info>CURLOPT_PASSWDFUNCTION</info> 设置一个回调函数，有三个参数，第一个
                       是cURL的资源句柄，第二个是一个密码提示符，第三个参数是密码长度允许的最大值。
                       返回密码的值。 从 PHP 7.3.0 开始移除。<info>CURLOPT_PROGRESSFUNCTION</info> 设置一个回调函
                       数，有五个参数，第一个是cURL的资源句柄，第二个是预计要下载的总字节（bytes）
                       数。第三个是目前下载的字节数，第四个是预计传输中总上传字节数，第五个是目前上
                       传的字节数。  只有设置 <info>CURLOPT_NOPROGRESS</info> 选项为 <info>false</info> 时才会调用这个回调函
                       数。  返回非零值将中断传输。 传输将设置 <info>CURLE_ABORTED_BY_CALLBACK</info> 错误。
                       <info>CURLOPT_READFUNCTION</info> 回调函数名。该函数应接受三个参数。第一个是 cURL
                       resource；第二个是通过选项
                       <info>CURLOPT_INFILE</info> 传给 cURL 的 stream resource；第三个参数是最大可以读取的数据的
                       数量。回
                       调函数必须返回一个字符串，长度小于或等于请求的数据量（第三个参数）。一般从传
                       入的 stream
                       resource 读取。返回空字符串作为 <return>EOF</return>（文件结束） 信号。 <info>CURLOPT_WRITEFUNCTION</info>
                       回调函数名。该函数应接受两个参数。第一个是 cURL resource；第二个是要写入的数
                       据字符串。数
                       据必须在函数中被保存。 函数必须准确返回写入数据的字节数，否则传输会被一个错误
                       所中
                       断。 <info>CURLOPT_XFERINFOFUNCTION</info> 接受两个参数的回调。与 <info>CURLOPT_PROGRESSFUNCTION</info>
                       具有相似的目的，但更现代并且是 cURL 的首选选项。  在 7.32.0 中添加。 从 PHP
                       8.2.0 开始可用。
                       
                       设置一个回调函数，有五个参数，第一个是cURL的资源句柄，第二个是预计要下载的总
                       字节（bytes）数。第三个是目前下载的字节数，第四个是预计传输中总上传字节数，第
                       五个是目前上传的字节数。
                       
                       只有设置 <info>CURLOPT_NOPROGRESS</info> 选项为 <info>false</info> 时才会调用这个回调函数。
                       
                       返回非零值将中断传输。 传输将设置 <info>CURLE_ABORTED_BY_CALLBACK</info> 错误。
                       
                       其他值： Option设置 <strong>$value</strong> 为<info>CURLOPT_SHARE</info><strong>curl_share_init()</strong> 返回的结果。 使
                       cURL 可以处理共享句柄里的数据。

<comment>Return:</comment>
  <info>bool</info>  成功时返回 <info>true</info>， 或者在失败时返回 <info>false</info>。

<comment>See Also:</comment>
   * <strong>curl_setopt_array()</strong>
   * <class>CURLFile</class>
   * <class>CURLStringFile</class>


