好吧,我不知道为什么我无法让下面的代码工作:
$test1 = array(6500,6537,3013);
$test2 = array(223,6500);
if ( in_array( $test1, $test2) ) {
echo "something is there";
}
当数组true
中存在test1
的至少一个值时,我试图获取test2
根据here中的示例#3,它应该可以正常工作。
答案 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