假设您有两个数组$a=array('apple','banana','canaple');and $b=array('apple');,您如何(优雅地)提取数组 a 中不在数组 b 中的元素的数字索引?(在这种情况下,索引:1 和 2)。
在这种情况下,数组 a 的元素总是比 b 多。
请注意,这不是要求array_diff_key,而是要求具有更多元素的数组中的数字索引,而这些元素在具有较少元素的数组中不存在。
array_diff让你走到一半。array_keys在差异上使用可以获得你想要的其余部分。
$a = ['apple','banana','canaple'];
$b = ['apple'];
$diff = array_diff($a, $b);
$keys = array_keys($diff);
var_dump($keys); // [1, 2]
Run Code Online (Sandbox Code Playgroud)
这是因为array_diff从第一个数组返回元素和它的键。如果您想编写它的 PHP 实现,array_diff它可能看起来像这样......
function array_diff(Array ... $arrays) {
$return = [];
$cmp = array_shift($arrays);
foreach ($cmp as $key => $value) {
foreach($arrays as $array) {
if (!in_array($value, $array)) {
$return[$key] = $value;
}
}
}
return $return;
}
Run Code Online (Sandbox Code Playgroud)
这让您了解如何实现结果,但在 php 内部将其实现为一种排序,因为它比上述实现快得多。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |