Php 将三个数组的键和值与“比较”;数组“u diff”u ukey“;
有人能解释一下,这段代码中的Php 将三个数组的键和值与“比较”;数组“u diff”u ukey“;,php,arrays,Php,Arrays,有人能解释一下,这段代码中的1和-1是什么:($a>$b)?1:-1 我知道数组([c]=>蓝色)正在返回,因为键c不存在于$a2中,并且键比较函数需要返回小于、等于或大于0的数字 但是我不明白,当key\u compare\u func返回0、1和-1时,我如何得到数组([c]=>蓝色): function myfunction($a,$b) { if ($a === $b) { return 0; } return ($a > $b) ? 1 :
1
和-1
是什么:($a>$b)?1:-1代码>
我知道数组([c]=>蓝色)
正在返回,因为键c不存在于$a2
中,并且键比较函数
需要返回小于、等于或大于0的数字
但是我不明白,当key\u compare\u func返回0、1和-1时,我如何得到数组([c]=>蓝色)
:
function myfunction($a,$b) {
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");
$result=array_diff_ukey($a1,$a2,"myfunction");
如果($a>$b)
为true(就在?
之后),则返回1。else(就在:
之后)将返回-1
这是一个简短的写作方式:
if ($a>$b) {
return 1;
} else {
return -1;
}
正如您在文档中看到的,“key_compare_func”需要返回小于、等于或大于0的数字。数字1
和-1
就是这个结果的示例
在您的情况下,您可以简单地使用,因为它返回相同的逻辑
您在返回中有数组([c]=>蓝色)
,因为$a2
数组中不存在键
将array1中的键与array2中的键进行比较,并返回差值。此函数类似于array_diff(),只是比较是在键而不是值上进行的
已编辑
特别是在数组diff-ukey
中,您只需要返回0
,因为该函数的确定方式与键相同,因此在您的示例中,您可以将其定义为:
function myfunction($a,$b) {
if ($a === $b)
return 0;
return 1; // or -1 or 3 or -3 **just not 0**
}
将其视为数组diff-ukey
背后的逻辑:
array function array-diff-ukey($a1, $a2, $compareFunction) {
$arr = array(); // init empty array
foreach($a1 as $key1 => $value1) { // for each key in a1
$found = false;
foreach($a1 as $key2 => $value2) { //search for all keys in a2
if ($compareFunction($key1, $key2) == 0)
$found = true; // found a key with the same
}
if ($found === false) // add the element only if non is found
$arr[$key1] = $value1;
}
return $arr;
}
它是PHP中的三元运算符。你可以把它当作速记If/Else来说。以下是一个例子:
/* most basic usage */
$var = 5;
$var_is_greater_than_two = ($var > 2 ? true : false); // if $var greater than 2
// return true
// else false
如果您难以理解,您可以通过以下方式进行更改:
if ($a===$b)
{
return 0;
}
else if($a > $b)
{
return 1;
}
else
{
return -1;
}
比较功能要求有3个可能选项-0
用于相等、正和负<代码>1
和-1
是正面和负面结果的示例感谢您的评论。但是,它如何返回这个结果?数组([c]=>blue)可能与更新后的我的帖子重复,更深入地解释了数组的工作方式谢谢你的评论。我知道返回中的数组([c]=>蓝色),因为$a2中不存在键c,“key_compare_func”需要返回小于、等于或大于0的数字。数字1和-1。但是我不明白,当key\u compare\u func返回0、1和-1时,我如何得到数组([c]=>蓝色)。@lyathurailyngaran当函数比较两个数组中的所有键时,她检查相似性(如果compare函数返回0)-对于除c
以外的所有情况,a2
中有一个键,调用myfunction(@key\u FROM_$A1@,@key\u FROM_$a2@)
返回0(相同的键),除了c
-这就是为什么他是唯一返回此行的人($a>$b)?1:-1;必须返回除0以外的任何内容吗?示例返回10也必须给出相同的结果?如果将其与数组diff ukey
一起使用,则为“是”。如果这篇文章帮助你考虑将它标记为接受