<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ PHP - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ freeCodeCamp 是一个免费学习编程的开发者社区，涵盖 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等，还有活跃的技术论坛和丰富的社区活动，在你学习编程和找工作时为你提供建议和帮助。 ]]>
        </description>
        <link>https://www.freecodecamp.org/chinese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ PHP - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/chinese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 19 May 2026 20:02:35 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/chinese/news/tag/php/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ PHP Implode——用 Join 将数组转换为字符串 ]]>
                </title>
                <description>
                    <![CDATA[ 在 PHP 中，implode() 函数是一个内置函数，它接收一个数组并将其转换为一个字符串。implode() 不修改原始数组。 不管这个数组是索引数组还是关联数组，都没有关系。只要你把数组传给 implode()，它就把所有的值连接成一个字符串。 PHP implode() 语法 implode() 接收两个参数——分隔符和你想转换为字符串的数组。 分隔符可以是任何字符或一个空字符串。只要你用引号指定它，它就是有效的。如果你没有传入分隔符，implode()  仍然有效。另一方面，数组可以是一个关联数组或一个索引数组。 注意：implode() 对嵌套数组不起作用。 implode() 的完整语法是这样的： implode(" ", $array); 在上面的语法中，一个空格（" "）是分隔符，$array 是数组。 在索引数组中使用 Implode 的例子 在 PHP 中，索引数组就像它听起来那样——数组中的每个值都有一个自动分配的索引。如果你愿意，你也可以分配索引。 下面是 implode() 在索引数组中工作的一个例子： <?php $langs = a ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/php-implode-convert-array-to-string-with-join/</link>
                <guid isPermaLink="false">6396f721a7bffa07c744157e</guid>
                
                    <category>
                        <![CDATA[ PHP ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Miya Liu ]]>
                </dc:creator>
                <pubDate>Tue, 06 Dec 2022 09:29:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2022/12/implode.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文：</strong> <a href="https://www.freecodecamp.org/news/php-implode-convert-array-to-string-with-join/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">PHP Implode – Convert Array to String with Join</a>
      </p><p>在 PHP 中，<code>implode()</code> 函数是一个内置函数，它接收一个数组并将其转换为一个字符串。<code>implode()</code> 不修改原始数组。</p><p>不管这个数组是索引数组还是关联数组，都没有关系。只要你把数组传给 <code>implode()</code>，它就把所有的值连接成一个字符串。</p><h2 id="php-implode-">PHP implode() 语法</h2><p><code>implode()</code> 接收两个参数——分隔符和你想转换为字符串的数组。</p><p>分隔符可以是任何字符或一个空字符串。只要你用引号指定它，它就是有效的。如果你没有传入分隔符，<code>implode()</code> 仍然有效。另一方面，数组可以是一个关联数组或一个索引数组。</p><p>注意：<code>implode()</code> 对嵌套数组不起作用。</p><p><code>implode()</code> 的完整语法是这样的：</p><pre><code class="language-js">implode(" ", $array);
</code></pre><p>在上面的语法中，一个空格（" "）是分隔符，<code>$array</code> 是数组。</p><h2 id="-implode-">在索引数组中使用 Implode 的例子</h2><p>在 PHP 中，索引数组就像它听起来那样——数组中的每个值都有一个自动分配的索引。如果你愿意，你也可以分配索引。</p><p>下面是 <code>implode()</code> 在索引数组中工作的一个例子：</p><pre><code class="language-js">&lt;?php
$langs = array("PHP", "JavaScript", "Python", "C++", "Ruby"); 

$newLangs = implode($langs);
// 由于我们正在打印一个字符串，我们可以使用 echo 来在浏览器中显示输出结果
echo $newLangs;
?&gt;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss1-2.png" class="kg-image" alt="ss1-2" width="600" height="400" loading="lazy"></figure><p>请注意，我没有传入分隔符，<code>implode()</code> 仍然工作正常。</p><p>在下面的例子中，我传入了一个空格、逗号和连字符作为分隔符：</p><pre><code class="language-js">&lt;?php
$langs = array("PHP", "JavaScript", "Python", "C++", "Ruby"); 

$newLangsSpace = implode(" ", $langs);
$newLangsComma = implode(", ", $langs);
$newLangsHyphen = implode("-", $langs);

// 由于我们正在打印一个字符串，我们可以使用 echo 来在浏览器中显示输出结果
echo $newLangsSpace."&lt;br&gt;"."&lt;br&gt;";
echo $newLangsComma."&lt;br&gt;"."&lt;br&gt;";
echo $newLangsHyphen ."&lt;br&gt;";
?&gt;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss2-2.png" class="kg-image" alt="ss2-2" width="600" height="400" loading="lazy"></figure><p>你可以看到，最好指定一个分隔符，这样你可以很好地看到这些值。</p><h2 id="-implode--1">在关联数组中使用 Implode 的例子</h2><p>你用一个关联数组定义了一个命名的索引。让我们看看 <code>implode()</code> 如何在关联数组中工作。</p><pre><code class="language-js">&lt;?php
$person = [
    'first_name' =&gt; "Kolade",
    'last_name' =&gt; "Chris",
    'likes' =&gt; "football and Pro-wrestling",
    'email' =&gt; "kolade@gmail.com",
];
//这不是我的电子邮件。不要费心给我发信息。

$newPerson = implode(" ", $person);
echo $newPerson."&lt;br&gt;";
?&gt;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss3-2.png" class="kg-image" alt="ss3-2" width="600" height="400" loading="lazy"></figure><p>你可以看到索引没有被打印出来。要想把索引也打印出来，你需要在打印数组的时候把数组附加到 <code>array_keys()</code> 方法中：</p><pre><code class="language-js">&lt;?php
$person = [
    'first_name' =&gt; "Kolade",
    'last_name' =&gt; "Chris",
    'likes' =&gt; "football and Pro-wrestling",
    'email' =&gt; "kolade@gmail.com",
];
// 这不是我的电子邮件。不要费心给我发信息。

$newPersonValues = implode(", ", $person)."&lt;br&gt;";
$newPersonKeys = implode(", ", array_keys($person));

echo $newPersonKeys."&lt;br&gt;"; 
echo $newPersonValues;
?&gt;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss4-2.png" class="kg-image" alt="ss4-2" width="600" height="400" loading="lazy"></figure><p>为了证明原始数组被修改，我将把数组和 imploded 变量一起打印出来：</p><pre><code class="language-js">&lt;?php
$person = [
    'first_name' =&gt; "Kolade",
    'last_name' =&gt; "Chris",
    'likes' =&gt; "football and Pro-wrestling",
    'email' =&gt; "kolade@gmail.com",
];
// 这不是我的电子邮件。不要费心给我发信息。

$newPersonValues = implode(", ", $person)."&lt;br&gt;";
$newPersonKeys = implode(", ", array_keys($person));

echo $newPersonKeys."&lt;br&gt;"; 
echo $newPersonValues."&lt;br&gt;";

print_r($person);
?&gt;
</code></pre><p>你可以使用 PHP View Chrome 扩展来格式化你打印的数组，这样它可以看起来更好：</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/phpViewer.png" class="kg-image" alt="phpViewer" width="600" height="400" loading="lazy"></figure><h2 id="-">小结</h2><p>在这篇文章中，你了解了 PHP 中的 <code>implode()</code> 函数以及它是如何工作的。我们也看了 <code>implode()</code> 函数如何在索引数组和关联数组中工作，并举了一些例子。</p><p>不要忘了 <code>implode()</code> 对嵌套数组（多维数组）不起作用。事实上，我可以证明这一点：</p><pre><code class="language-js">&lt;?php
$persons = array (
  array("Kolade", 22, 03),
  array("Yemi", 15, 12),
  array("Cook", 07, 01),
  array("Oliver", 19, 01)
);

$newPersons = implode($persons);
print_r($newPersons);
?&gt;
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss6-2.png" class="kg-image" alt="ss6-2" width="600" height="400" loading="lazy"></figure><p>它不起作用，因为 <code>implode()</code> 只对平面数组（<code>[ ]</code>）而不是多维数组（<code>[ [ ] ]</code>）起作用。implode 看的是第一个数组，一旦它发现第一个数组中有许多数组，它就会抛出一个错误。</p><p>谢谢你阅读本文。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ PHP Explode——如何将一个字符串拆成一个数组 ]]>
                </title>
                <description>
                    <![CDATA[ PHP explode() 函数将一个字符串转换为一个数组。字符串中的每个字符都有一个索引，从 0 开始。与内置的 imlode() 函数一样， explode() 函数不修改数据（字符串）。 explode() 函数的语法 explode() 函数接收三个参数：  * 分隔符  * 要转换为数组的字符串  * 返回的数组元素的最大数目 完整的语法看起来像这样： explode(separator, string, limit) implode() 即使没有分隔符，也能工作，而 explode() 函数没有分隔符就不会工作。所以，就像字符串分割成数组一样，分隔符是必须的。你可以使用  limit 参数来指定期望的数组数量。它是可选的。 implode() 的例子 比方说，我有一个字符串 “Hello World”。如果将该字符串传入 explode() 函数，Hello 在数组中的索引为 0，World 的索引为1。 记住，数组使用基于 0 的索引。 $str = "Hello world"; ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/php-explode-how-to-split-a-string-into-an-array/</link>
                <guid isPermaLink="false">6375f6ee7cdd940712f7c786</guid>
                
                    <category>
                        <![CDATA[ PHP ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Chengjun.L ]]>
                </dc:creator>
                <pubDate>Thu, 17 Nov 2022 09:09:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2022/11/explode.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>原文：</strong> <a href="https://www.freecodecamp.org/news/php-explode-how-to-split-a-string-into-an-array/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">PHP Explode – How to Split a String into an Array</a>
      </p><p>PHP <code>explode()</code> 函数将一个字符串转换为一个数组。字符串中的每个字符都有一个索引，从 0 开始。与内置的 <code>imlode()</code> 函数一样，<code>explode()</code> 函数不修改数据（字符串）。</p><h3 id="explode-">explode() 函数的语法</h3><p><code>explode()</code> 函数接收三个参数：</p><ul><li>分隔符</li><li>要转换为数组的字符串</li><li>返回的数组元素的最大数目</li></ul><p>完整的语法看起来像这样：</p><pre><code class="language-js">explode(separator, string, limit)
</code></pre><p><code>implode()</code> 即使没有分隔符，也能工作，而 <code>explode()</code> 函数没有分隔符就不会工作。所以，就像字符串分割成数组一样，分隔符是必须的。你可以使用 <code>limit</code> 参数来指定期望的数组数量。它是可选的。</p><h2 id="implode-">implode() 的例子</h2><p>比方说，我有一个字符串 “Hello World”。如果将该字符串传入 <code>explode()</code> 函数，<code>Hello</code> 在数组中的索引为 0，<code>World</code> 的索引为1。 记住，数组使用基于 0 的索引。</p><pre><code class="language-js">$str = "Hello world";
$newStr = explode(" ", $str);

// 我们在打印一个字符串，所以我们可以使用 print_r()
print_r($newStr); 
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss1-3.png" class="kg-image" alt="ss1-3" width="600" height="400" loading="lazy"></figure><p>如果你在 <code>explode()</code> 函数中指定了一个限制，那么 index(es) 将不会超过这个数字。例如，如果你指定 2，所有的字符串都会显示出来，但索引不会超过 2。</p><pre><code class="language-js">$str = "CSS, HTML, PHP, Java, JavaScript";
$newStr = explode(" ", $str, 2);

// 我们在打印一个字符串，所以我们可以使用 print_r()
print_r($newStr); 
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss2-3.png" class="kg-image" alt="ss2-3" width="600" height="400" loading="lazy"></figure><p>你可以看到，第一个元素的索引为 0，其余的逗号分隔的元素的索引为 1，该索引不超过指定的 2 的限制。</p><p><code>explode()</code> 函数查看字符串中的空格，将字符串分割成一个数组。如果你把两个不同的字打在一起，它们会被视为一个。</p><pre><code class="language-js">$str = "CSS HTMLPHP Java JavaScript";
$newStr = explode( " ", $str);

// 我们在打印一个字符串，所以我们可以使用 print_r()
print_r($newStr); 
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss5-2.png" class="kg-image" alt="ss5-2" width="600" height="400" loading="lazy"></figure><p>你可以看到，HTML 和 PHP 被打印在一起，因为它们之间没有空格。</p><h2 id="-"><strong>小结</strong></h2><p>这篇文章向你展示了如何在 PHP 中使用 <code>explode()</code> 函数。</p><p>注意，与 <code>implode()</code> 不需要分隔符就能工作不同，分隔符在 <code>explode()</code> 中是非常重要的。如果不指定分隔符，<code>explode()</code> 将不能按所期望的工作。</p><pre><code class="language-js">$str = "CSS, HTML, PHP, Java, JavaScript";
$newStr = explode($str, 2);

// 我们在打印一个字符串，所以我们可以使用 print_r()
print_r($newStr); 
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss3-3.png" class="kg-image" alt="ss3-3" width="600" height="400" loading="lazy"></figure><p>如果你将分隔符设置为一个空字符串，你会得到错误：</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/10/ss4-3.png" class="kg-image" alt="ss4-3" width="600" height="400" loading="lazy"></figure><p>谢谢你阅读本文。</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 一点都不高大上，手把手教你使用 Travis CI 实现持续部署 ]]>
                </title>
                <description>
                    <![CDATA[ > 持续集成、持续交付、持续部署。听起来就像是在大型软件工程，高端开发项目组里才会应用到的概念。其实不然，通过运用一些开源免费的工具和平台，不管是你的个人博客还是 side-projects 都能够享受到开发任务自动化的便利。 这次我们的教程主要会分为以下几步：  1. 注册并设置 Travis CI  2. 在开发服务器（或本地）上生成密匙并与部署服务器互信  3. 安装 Ruby 2.0 以上版本并安装 travis 的命令行工具  4. 编写测试并在项目中配置 travis  5. 编写 travis 自动部署脚本  6. 提交代码检验运行 本教程以最基础的部署 php 站点为例（其实与部署的应用本身关系不大，不管是 NodeJS 还是 Hexo 一类的静态站点生成全部都大同小异，只需要替换自动执行的命令就可以了） 注册并设置 Travis CI 先打开 Travis CI 官网 [https://link.zhihu.com/?target=https%3A//travis-ci.com/] ，点击右上角使用Github登录的按钮（这里假设读者已经注册并掌握 GitHub ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/continuous-deployment-with-travis-ci/</link>
                <guid isPermaLink="false">5d327acffbfdee429dc5f01c</guid>
                
                    <category>
                        <![CDATA[ Travis CI ]]>
                    </category>
                
                    <category>
                        <![CDATA[ 持续集成 ]]>
                    </category>
                
                    <category>
                        <![CDATA[ PHP ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ 余博伦 ]]>
                </dc:creator>
                <pubDate>Mon, 31 Jan 2022 07:20:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2019/07/v2-24b2803140c11b9bf00cd5bd542222cc_1200x500.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <blockquote>持续集成、持续交付、持续部署。听起来就像是在大型软件工程，高端开发项目组里才会应用到的概念。其实不然，通过运用一些开源免费的工具和平台，不管是你的个人博客还是 side-projects 都能够享受到开发任务自动化的便利。</blockquote><p>这次我们的教程主要会分为以下几步：</p><ol><li>注册并设置 Travis CI</li><li>在开发服务器（或本地）上生成密匙并与部署服务器互信</li><li>安装 Ruby 2.0 以上版本并安装 travis 的命令行工具</li><li>编写测试并在项目中配置 travis</li><li>编写 travis 自动部署脚本</li><li>提交代码检验运行</li></ol><p>本教程以最基础的部署 php 站点为例（其实与部署的应用本身关系不大，不管是 NodeJS 还是 Hexo 一类的静态站点生成全部都大同小异，只需要替换自动执行的命令就可以了）</p><h2 id="-travis-ci">注册并设置 Travis CI</h2><p>先打开 <a href="https://link.zhihu.com/?target=https%3A//travis-ci.com/" rel="nofollow noreferrer">Travis CI 官网</a>，点击右上角使用Github登录的按钮（这里假设读者已经注册并掌握 GitHub 的基本使用了）</p><figure class="kg-card kg-image-card"><img src="https://pic1.zhimg.com/80/v2-487060daf3a1875833ce135966526ed8_hd.png" class="kg-image" alt="v2-487060daf3a1875833ce135966526ed8_hd" width="600" height="400" loading="lazy"></figure><p>登录成功后，你应该会看到和下图差不多的页面，按照提示进行操作：</p><figure class="kg-card kg-image-card"><img src="https://pic2.zhimg.com/80/v2-35a0e932cf8db58f535d929f7b3b1b31_hd.png" class="kg-image" alt="v2-35a0e932cf8db58f535d929f7b3b1b31_hd" width="600" height="400" loading="lazy"></figure><p>你可以打开先看一眼你在 Travis CI 上项目的页面，不过现在肯定是空空如也一片，我们在官网上需要进行的操作暂且到此为止。</p><h2 id="-">在开发服务器（或本地）生成密匙并与部署服务器互信</h2><p>不管是本地还是开发服务器，这里已经默认了你的开发环境是 Linux/类 Unix 系统，不要问我 Windows 该怎么办，Win10 可以安装 Ubuntu 子系统，当然你要是不觉得蛋疼也可以下载一些类似 ssh key generator 的软件。</p><p>这里其实只需要用到两个命令。</p><p>首先在本地或开发服务器上生成密匙，在命令行里输入：</p><pre><code class="language-bash">ssh-keygen -t rsa
</code></pre><p>之后只需要按照提示操作，你大概会看到类似下面的内容：</p><pre><code class="language-bash"># 来自Digital Ocean
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa): 
# 这里的密码一定要留空袄
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+
</code></pre><p>接下来你需要将你开发环境生成的密匙拷贝到你的部署服务器上。之所以进行这一步是为了实现免密码登录 ssh，因为 travis-ci 自动执行命令是不支持交互式输入密码的。</p><p>同样只需要一个命令：</p><pre><code class="language-bash">ssh-copy-id &lt;登录部署服务器用户名&gt;@&lt;部署服务器地址&gt;
# 如果ssh默认端口不是22
ssh-copy-id &lt;登录部署服务器用户名&gt;@&lt;部署服务器地址&gt; -p &lt;部署服务器ssh端口&gt;
# 示例
ssh-copy-id travis@123.123.123.123 -p 12345
</code></pre><p>接下来也同样按提示操作，第一次输入密码登录完成后，就可以使用密匙测试免密登录啦，当然为了安全起见，记得这里专门为持续部署新建一个权限适宜的用户袄。</p><h2 id="-ruby-2-0-travis-">安装 Ruby 2.0 以上版本并安装 travis 的命令行工具</h2><p>简单的 <strong>apt-get install ruby </strong>并不能顺利解决问题，travis 命令行工具依赖 ruby2.0 以上的版本。</p><p>这个地方其实是一个坑，我想大部分同学和我一样都是使用 Ubuntu 系统，默认使用<strong>apt-get install ruby2.0 </strong>安装的事实上是 1.9 版本，这特么就很尴尬了。</p><p>所以我们不得不下载源码手动编译安装。如果你的开发环境之前安装过ruby记得先删掉：</p><pre><code class="language-bash">sudo apt-get -y update
sudo apt-get -y install build-essential zlib1g-dev libssl-dev libreadline6-dev libyaml-dev
cd /tmp
# 由于众所周知的网络原因，此处可能需要使用到http_proxy
wget http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz 
tar -xvzf ruby-2.1.5.tar.gz
cd ruby-2.1.5/
./configure --prefix=/usr/local
make
sudo make install
</code></pre><p>如果嫌麻烦你可以把上述命令保存成一个 <strong>.sh </strong>文件一键执行。安装完成后使用 <strong>ruby -v </strong>验证一下版本。</p><p>之后再运行：</p><pre><code class="language-bash"># 由于众所周知的网络原因，此处可能需要使用到http_proxy
gem install travis
</code></pre><p>如果网络实在太差，可以使用 <a href="https://link.zhihu.com/?target=https%3A//ruby.taobao.org/" rel="nofollow noreferrer">RubyGems 镜像</a></p><pre><code class="language-bash">gem sources --add https://gems.ruby-china.org/
gem sources --remove https://rubygems.org/
gem sources --remove http://rubygems.org/
gem sources -l
</code></pre><p>安装完成后，切换到你开发环境的项目目录下，运行：</p><pre><code class="language-bash">travis login
</code></pre><p>根据提示，输入你刚刚用于 travis-ci 网站登录的 GitHub 账户名及密码。</p><h2 id="-travis">编写测试并在项目中配置 travis</h2><p>下面我以使用 PHPUnit 对 PHP 进行测试为例对持续部署项目进行配置：</p><p>其实你用 mocha 测试 JS 什么的也是一样的。</p><pre><code class="language-php">&lt;?php
//假如你的PHP项目中并没有安装PHPUnit依赖，就像我这么写吧，不要用use关键字引入，否则在travis-ci运行时会报错
class Test extends PHPUnit_Framework_TestCase
{
    public function testAutoPass()
    {
        $this-&gt;assertEquals(
            'yubolun',
            'yubolun'
        );
    }
}
</code></pre><p>之后在你的项目根目录新建一个名为 <strong>.travis.yml </strong>的文件：</p><pre><code class="language-yaml">language: php
php:
- 5.6
before_script: composer require phpunit/phpunit
script: phpunit Test.php
</code></pre><p>前端项目也很类似：</p><pre><code class="language-yaml">language: node_js
node_js:
  - '6.9.5'
  - '7.5.0'
before_script: npm install
script: npm run test
</code></pre><p>以上只是举个例子，更多详细的配置内容请查阅<a href="https://link.zhihu.com/?target=https%3A//docs.travis-ci.com/" rel="nofollow noreferrer">官网文档</a>。</p><h2 id="-travis-">编写 travis 自动部署脚本</h2><p>做好基本的项目配置之后，我们需要配置持续部署的自动运行脚本。</p><p>首先使用 <strong>travis encrypt-file </strong>命令对你刚刚在开发环境生成的密匙进行加密（这样一来可以放心地将密匙保存在公开的开源项目当中）。</p><pre><code class="language-bash"># 此处的--add参数表示自动添加脚本到.travis.yml文件中
travis encrypt-file ~/.ssh/id_rsa --add
</code></pre><p>之后再打开 <strong>.travis.yml </strong>文件，你会看到一段类似如下内容的命令：</p><pre><code class="language-yaml">before_install:
  - openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
    -in id_rsa.enc -out ~/.ssh/id_rsa -d
</code></pre><p>默认生成的命令可能会在/前面带转义符\，我们不需要这些转义符，手动删掉所有的转义符，否则可能在后面引发莫名的错误。</p><p>之后为了保证命令的顺利运行，我们还需要正确地设置权限和认证：</p><pre><code class="language-yaml">before_install:
  - openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
    -in id_rsa.enc -out ~/.ssh/id_rsa -d
# 添加如下两行内容，Host后面的ip替换成你的部署服务器地址
  - chmod 600 ~/.ssh/id_rsa
  - echo -e "Host 123.123.123.123\n\tStrictHostKeyChecking no\n" &gt;&gt; ~/.ssh/config
</code></pre><p><strong>P.S. 此处的配置文件只是示例啊，不要直接复制，每次生成的加密都是不一样的。</strong></p><p>之后，也是最重要的一步，配置你执行持续部署的命令：</p><pre><code class="language-yaml">language: php
php:
- 5.6
before_install:
- openssl aes-256-cbc -K $encrypted_830d3b21a25d_key -iv $encrypted_830d3b21a25d_iv
  -in id_rsa.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
- echo -e "Host 123.123.123.123\n\tStrictHostKeyChecking no\n" &gt;&gt; ~/.ssh/config
before_script: composer require phpunit/phpunit
script: phpunit Test.php
# 添加一个名为after_success的钩子，并写入你需要执行部署操作的命令
after_success:
- ssh travis@123.123.123.123 -p 12345 'cd /var/www &amp;&amp; git pull'
</code></pre><p>在这里你可以运行任意的脚本，比方说我的项目只需要把代码 pull 下来就算部署完成了，其他的例如静态博客可以 <strong>hexo g</strong>，或者是 node 应用的 <strong>pm2 startup</strong>，前端项目也可以先 <strong>webpack </strong>一下等等，别跑 <strong>rm -rf</strong>，其他的随意。</p><h2 id="--1">提交代码检验运行</h2><p>上述的步骤全都部署完成后，只需要使用git将你的所有改动提交到 GitHub 上，travis-ci 就会自动运行啦，最后别忘了登录到你的部署服务器检验一下效果袄~</p><figure class="kg-card kg-image-card"><img src="https://pic2.zhimg.com/80/v2-a6160eb4a70cc923e0c9d3f32ab889b1_hd.png" class="kg-image" alt="v2-a6160eb4a70cc923e0c9d3f32ab889b1_hd" width="600" height="400" loading="lazy"></figure><p>至此大功告成，接下来你只需要愉快地写代码，提交 Git。剩下的测试、编译、部署工作全部都会自动完成啦。</p><h1 id="--2">参考资料</h1><ul><li><a href="https://link.zhihu.com/?target=https%3A//cnodejs.org/topic/5885f19c171f3bc843f6017e" rel="nofollow noreferrer">利用 travis-ci 持续部署 nodejs 应用</a></li><li><a href="https://link.zhihu.com/?target=http%3A//stackoverflow.com/questions/18490591/how-to-install-ruby-2-on-ubuntu-without-rvm" rel="nofollow noreferrer">How to install Ruby 2 on Ubuntu without RVM</a></li><li><a href="https://link.zhihu.com/?target=https%3A//www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2" rel="nofollow noreferrer">How To Set Up SSH Keys</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ PHP 数组长度教程——如何获取数组大小 ]]>
                </title>
                <description>
                    <![CDATA[ 数组是 PHP 中的一种强大的数据类型。知道如何快速确定数组的大小是一项有用的技能。 在本文中，我将快速介绍数组的工作原理，然后我将深入研究如何获取 PHP 数组的大小。 如果你已经知道什么是数组，则可以直接跳到“如何获取数组大小”部分。 PHP 中的数组是什么 在我们深入了解数组大小之前，需要确保我们了解数组是什么。PHP 中的数组 [https://www.php.net/manual/en/language.types.array.php]是一种允许存储多个数据的变量类型。 例如，如果你要存储一个简单的字符串，你将使用 PHP 字符串类型： $heading = 'PHP Array Length Tutorial'; 但是，如果你想存储更多的单独数据，你可以考虑使用几个字符串变量。 $heading = 'PHP Array Length Tutorial'; $subheading = 'How to get an array size'; $author = 'Jonathan Bossenger' 这一切都很好，但是如果你需要存储更多数据，并快速调用代码中 ]]>
                </description>
                <link>https://www.freecodecamp.org/chinese/news/php-array-length-how-to-get-an-array-size/</link>
                <guid isPermaLink="false">612c86610cd9ee0623e15ad2</guid>
                
                    <category>
                        <![CDATA[ PHP ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Chengjun.L ]]>
                </dc:creator>
                <pubDate>Mon, 30 Aug 2021 07:00:00 +0000</pubDate>
                <media:content url="https://chinese.freecodecamp.org/news/content/images/2021/08/count.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>数组是 PHP 中的一种强大的数据类型。知道如何快速确定数组的大小是一项有用的技能。</p><p>在本文中，我将快速介绍数组的工作原理，然后我将深入研究如何获取 PHP 数组的大小。</p><p>如果你已经知道什么是数组，则可以直接跳到“如何获取数组大小”部分。</p><h2 id="php-">PHP 中的数组是什么</h2><p>在我们深入了解数组大小之前，需要确保我们了解数组是什么。<a href="https://www.php.net/manual/en/language.types.array.php">PHP 中的数组</a>是一种允许存储多个数据的变量类型。</p><p>例如，如果你要存储一个简单的字符串，你将使用 PHP 字符串类型：</p><pre><code class="language-php">$heading = 'PHP Array Length Tutorial';</code></pre><p>但是，如果你想存储更多的单独数据，你可以考虑使用几个字符串变量。</p><pre><code>$heading = 'PHP Array Length Tutorial';
$subheading = 'How to get an array size';
$author = 'Jonathan Bossenger'</code></pre><p>这一切都很好，但是如果你需要存储更多数据，并快速调用代码中其他地方的任何项目，该怎么办？这就是数组派上用场的地方。你仍然可以存储单个数据，但使用单个变量。</p><pre><code class="language-php">$post_data = array(
    'PHP Array Length Tutorial',
    'How to get an array size',
    'Jonathan Bossenger'
);</code></pre><p>该数组中的每个项目都可以通过其数字键引用。因此，无需调用单个变量，你可以通过其数字键引用单个数组项。</p><figure class="kg-card kg-code-card"><pre><code>echo $post_data[0];</code></pre><figcaption>在 PHP 中，数字键从 0 开始</figcaption></figure><p>为了获得更多控制，数组还允许你使用字符串定义自己的数组键。</p><pre><code>$post_data = array(
    'heading' =&gt; 'PHP Array Length Tutorial',
    'subheading' =&gt; 'How to get an array size',
    'author' =&gt; 'Jonathan Bossenger'
);</code></pre><p>这允许你通过其字符串键引用数组项。</p><pre><code class="language-php">echo $post_data['heading'];</code></pre><p>你还可以使用类似于 JavaScript 的短数组写法定义数组：</p><pre><code>$post_data = [
    'heading' =&gt; 'PHP Array Length Tutorial',
    'subheading' =&gt; 'How to get an array size',
    'author' =&gt; 'Jonathan Bossenger'
];</code></pre><p>数组也可以嵌套，形成更复杂的数组变量：</p><pre><code>$post_data = [
    'heading' =&gt; 'PHP Array Length Tutorial',
    'subheading' =&gt; 'How to get an array size',
    'author' =&gt; [
        'name' =&gt; 'Jonathan Bossenger',
        'twitter' =&gt; 'jon_bossenger',
    ]
];
</code></pre><p>而且，你可以使用其嵌套键调用特定的数组值：</p><pre><code class="language-php">echo $post_data['author']['name'];</code></pre><p>但是，如果你发现自己经常这样做，你可能需要考虑使用<a href="https://www.php.net/manual/en/language.types.object.php">对象</a>而不是数组。</p><p>如果你需要快速收集并在一个函数中使用不同的相关数据，或者将这些数据传递给另一个函数，则数组很有用。</p><p>通过将这些数据放入数组中，你可以定义更少的变量，并且可以使你的代码在以后更易于阅读和理解。将单个数组变量传递给另一个函数也比传递多个字符串容易得多。</p><pre><code>$post_data = [
    'heading' =&gt; 'PHP Array Length Tutorial',
    'subheading' =&gt; 'How to get an array size',
    'author' =&gt; [
        'name' =&gt; 'Jonathan Bossenger',
        'twitter' =&gt; 'jon_bossenger',
    ]
];

$filtered_post_data = filter_post_data($post_data)</code></pre><h2 id="-php-">如何在 PHP 中获取数组的大小</h2><p>通常，当我们讨论数组的大小时，我们讨论的是该数组中存在多少个元素。有两种常用的方法来获取数组的大小。</p><p>最常用的方法是使用 PHP <a href="https://www.php.net/manual/en/function.count.php">count()</a> 函数。正如函数名所说，<code>count()</code> 将返回数组元素的计数。但是我们如何使用 <code>count()</code> 函数取决于数组结构。</p><p>让我们看看之前定义的两个示例数组。</p><pre><code>$post_data = array(
	'heading' =&gt; 'PHP Array Length Tutorial',
	'subheading' =&gt; 'How to get an array size',
	'author' =&gt; 'Jonathan Bossenger'
);

echo count($post_data);</code></pre><p>在此示例中，<code>count($post_data)</code> 的结果是 3。这是因为该数组中有 3 个元素：heading、subheading 和 author。但是我们的第二个嵌套数组示例呢？</p><pre><code>$post_data = [
	'heading' =&gt; 'PHP Array Length Tutorial',
	'subheading' =&gt; 'How to get an array size',
	'author' =&gt; [
		'name' =&gt; 'Jonathan Bossenger',
		'twitter' =&gt; 'jon_bossenger',
	]
];
echo count($post_data);</code></pre><p>在这个例子中，<code>count($post_data)</code> 也将返回 3。这是因为默认情况下 <code>count()</code> 函数只计算顶层数组元素。</p><p>如果你看一下<a href="https://www.php.net/manual/en/function.count.php">函数的定义</a>，你会发现它接受两个参数——要计数的数组和一个 <code>mode</code> 整数。该模式的默认值是预定义的常量 <code>COUNT_NORMAL</code>，它告诉函数只计算顶层数组元素。</p><p>如果我们改为传递预定义的常量 <code>COUNT_RECURSIVE</code>，它将运行所有级别的嵌套，并对其进行计数。</p><pre><code>$post_data = [
	'heading' =&gt; 'PHP Array Length Tutorial',
	'subheading' =&gt; 'How to get an array size',
	'author' =&gt; [
		'name' =&gt; 'Jonathan Bossenger',
		'twitter' =&gt; 'jon_bossenger',
	]
];
echo count($post_data, COUNT_RECURSIVE);</code></pre><p>现在，正如预期的那样，<code>count($post_data, COUNT_RECURSIVE)</code> 的结果将是 5。</p><p>“等等”，我知道你在想，“你提到有另一种方式？”</p><p>是的，你可以使用的另一个函数是 <a href="https://www.php.net/manual/en/function.sizeof.php">sizeof()</a>。然而，<code>sizeof()</code> 只是 <code>count()</code> 的别名，许多人认为 <code>sizeof()</code> 将返回数组的内存使用情况。</p><p>因此最好坚持使用 <code>count()</code>，这是一个更适合你正在做的事情的名称——计算数组中的元素。</p><p>谢谢你阅读本文！ 我希望你现在对如何在 PHP 中查找数组的大小有了更好的了解。</p><p>原文：<a href="https://www.freecodecamp.org/news/php-array-length-how-to-get-an-array-size/">PHP Array Length Tutorial – How to Get an Array Size</a>，作者：<a href="https://www.freecodecamp.org/news/author/jonathan-bossenger/">Jonathan Bossenger</a></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
