函数细节明确
<ul>
<li>记录一些函数,容易出错,规则比较多。</li>
</ul>
<h2>数组差集</h2>
<ul>
<li>array_diff(被对比的数组, 和更多数组进行比较 )</li>
<li>返回值为:“被对比的数组”中的值,不在其他数组中</li>
<li>理解为:第一个参数中的值,不在其他数组中</li>
</ul>
<pre><code class="language-php">$a = [11, 22, 33];
$b = [22, 33, 44,];
$c = [11, 22, 33,];
$d = [11, 22, 33, 44];
$e = [55, 66];
$ab = array_diff($a, $b);
var_export($ab); // [0 => 11,]
echo '<br />';
$ac = array_diff($a, $c);
var_export($ac); // []
echo '<br />';
$ad = array_diff($a, $d);
var_export($ad); // []
echo '<br />';
$ae = array_diff($a, $e);
var_export($ae); // [11, 22, 33]
echo '<br />';
</code></pre>
<h2>数组合并</h2>
<h4>返回值</h4>
<ul>
<li>数组中有相同的字符串键名,该键名后面的值将覆盖前一个值</li>
<li>数组包含数字键名,后面的值,不会覆盖原来的值,而是附加到后面</li>
<li>数组以数字作为键名,该键名会以连续方式重新索引</li>
<li>更详情说明,请查看官网手册</li>
</ul>
<pre><code class="language-php">// 数组中有相同的字符串键名,该键名后面的值将覆盖前一个值
$array1 = ["color" => "red", 2, 4];
$array2 = ["a", "b", "color" => "green", "shape" => "trapezoid", 4];
$result = array_merge($array1, $array2);
var_export($result);
// ['color' => 'green', 0 => 2, 1 => 4, 2 => 'a', 3 => 'b', 'shape' => 'trapezoid', 4 => 4,]
echo '<br />';
$a = [11, 22, 33];
$b = [22, 33, 44,];
$ab = array_merge($a, $b);
var_export($ab); // [11, 22, 33, 22, 33, 44,]
echo '<br />';
$c = [1=> 'a', 2=> 'b', 3=> 'c'];
$d = [2=> 'b', 3=> 'c', 4=> 'd'];
$e = [5=>'e', 6=>'f'];
// 数组以数字作为键名,该键名会以连续方式重新索引
$cb = array_merge($c, $d);
var_export($cb); // [0 => 'a', 1 => 'b', 2 => 'c', 3 => 'b', 4 => 'c', 5 => 'd',]
echo '<br />';
// 数组以数字作为键名,该键名会以连续方式重新索引
$ce = array_merge($c, $e);
var_export($ce); // [0 => 'a', 1 => 'b', 2 => 'c', 3 => 'e', 4 => 'f', ]
echo '<br />';
/**
* TODO::完全保留原有数组,只想新的数组附加到后面,使用 + 运算符:
* 1-理解为:完全保留两个数组中的所有键值。前提是两个数组中的键是不相同的。
* 2-如果两个数组中,键存在相同,以第一个数组的键值为准。
*/
$ce = $c + $e;
var_export($ce); // [1 => 'a', 2 => 'b', 3 => 'c', 5 => 'e', 6 => 'f', ]
echo '<br />';
$h = [1 => 11, 2 => 22];
$i = [5 => 55, 6 => 66];
$j = [1 => 10, 6 => 66];
$hi = $h + $i;
var_export($hi); // [ 1 => 11, 2 => 22, 5 => 55, 6 => 66, ]
echo '<br />';
// 两个数组相加,两个数组中键存在相同,以第一个数组的键值为准。
$hj = $h + $j;
var_export($hj); // [1 => 11, 2 => 22, 6 => 66, ]
echo '<br />';
</code></pre>