PHP如何检查两个数组的相等性

时间:2015-12-18 21:25:01

标签: php arrays

好吧,我不知道为什么我无法让下面的代码工作:

    $test1 = array(6500,6537,3013);
    $test2 = array(223,6500);
    if ( in_array( $test1, $test2) ) {
        echo "something is there";
    }

当数组true中存在test1的至少一个值时,我试图获取test2

根据here中的示例#3,它应该可以正常工作。

2 个答案:

答案 0 :(得分:2)

您想要array_intersect()foreach (var row in dgvAllTenants.SelectedRows.Cast<DataGridViewRow>().Where(row => _myTenants.Count(x => x.TenantId.ToString() == row.Cells["TenantId"].Value.ToString()) == 0)) { _myTenants.Add(_allTenants.Where(x => x.TenantId.ToString() == row.Cells["TenantID"].Value.ToString()).ToList()[0]); } dgvMyTenants.DataSource = _myTenants.ToDataTable(); 将“针”中的数组视为要测试的不同单个值。它测试整个阵列的整体。

e.g。

in_array

答案 1 :(得分:0)

  

in_array - 检查数组中是否存在值   值得知道的是,in_array会检查确切的值(关于其数据类型)。

在您的示例中,您的条件永远不会返回true。

考虑以下示例:

php > $t1 = array(6500, 6537, 3013);
php > $t2 = array(223, 6500);

[223,6500]是否包括[6500,6537,3013]?当然不。

php > echo in_array($t1, $t2) ? "something is here" : "nihil";
nihil
php > $x = 223;

[223,6500]是否包括223?是。所以,它会打印出#34;有些东西在这里&#34;。

php > echo in_array($x, $t2) ? "something is here" : "nihil";
something is here

php > $t1 = array(6500, 6537, 3013, 223);

数组[6500,6537,3013,223]是否包含数组[223,6500] ? 再没有。

php > echo in_array($t2, $t1) ? "something is here" : "nihil";
nihil
php > $t1 = array(223, 6500, 6537, 3013);
如果我们将223作为第一个(第零个)元素插入,那么什么都不会改变。 [223,6500,6537,3013]数组内没有[223,6500]数组。

php > echo in_array($t2, $t1) ? "something is here" : "nihil";
nihil

[[223,6500],6537,3013]包括[223,6500]。

php > $t1 = array(array(223, 6500), 6537, 3013);
php > echo in_array($t2, $t1) ? "something is here" : "nihil";
something is here