我有2个数组,每个数组var_dump()
都在下面。
我尝试使用array_intersect()
,但没有返回任何内容,也没有错误:
if (array_intersect($userInterests, $interests)) {
echo "found";
}
小数组,$ userInterests:
array(3) {
[0]=>
object(stdClass)#8 (1) {
["interestId"]=>
string(1) "2"
}
[1]=>
object(stdClass)#6 (1) {
["interestId"]=>
string(1) "3"
}
[2]=>
object(stdClass)#9 (1) {
["interestId"]=>
string(1) "5"
}
}
大阵容,$ interest:
array(15) {
[0]=>
object(stdClass)#2 (2) {
["interestName"]=>
string(5) "Musik"
["interestID"]=>
string(1) "1"
}
[1]=>
object(stdClass)#11 (2) {
["interestName"]=>
string(3) "Mad"
["interestID"]=>
string(1) "2"
}
[2]=>
object(stdClass)#12 (2) {
["interestName"]=>
string(6) "Rejser"
["interestID"]=>
string(1) "3"
}
[3]=>
object(stdClass)#13 (2) {
["interestName"]=>
string(10) "Mad Moneyz"
["interestID"]=>
string(1) "4"
}
[4]=>
object(stdClass)#14 (2) {
["interestName"]=>
string(5) "Biler"
["interestID"]=>
string(1) "5"
}
[5]=>
object(stdClass)#15 (2) {
["interestName"]=>
string(7) "Netflix"
["interestID"]=>
string(1) "6"
}
[6]=>
object(stdClass)#16 (2) {
["interestName"]=>
string(26) "Lange gåture på stranden"
["interestID"]=>
string(1) "7"
}
[7]=>
object(stdClass)#17 (2) {
["interestName"]=>
string(15) "Bjergbestigning"
["interestID"]=>
string(1) "8"
}
}
我的目标是将所选选项标记为已选择,如下所示:
<option value="<?php echo $interest->interestID; ?>"<?php echo (in_array($interest->interestID, $userInterests)) ? ' selected="selected"' : ''; ?>><?php echo $interest->interestName; ?></option>
$ interest是从更大的阵列中获得的特定利益,$ interest
$ userInterests是较小的数组
答案 0 :(得分:0)
将它们与array_merge()合并,并比较元素数量sizeof()
$array1 = array(1,2,3,4,5);
$array2 = array(6,7,8,9,10);
if(sizeof(array_merge($array1, $array2)) < sizeof($array1) + sizeof($array2))
//Common values
要检查元素是否在数组中,请使用in_array()
答案 1 :(得分:0)
问题是你的第一个数组实际上是一个对象数组。你基本上问你的PHP这个对象数组是否包含3
?这显然不是一个有效的问题。您需要将对象数组转换为一组数字。
这
array(3) {
[0]=>
object(stdClass)#8 (1) {
["interestId"]=>
string(1) "2"
}
[1]=>
object(stdClass)#6 (1) {
["interestId"]=>
string(1) "3"
}
[2]=>
object(stdClass)#9 (1) {
["interestId"]=>
string(1) "5"
}
}
要
array(3) {
[0]=>
string(1) "2"
[1]=>
string(1) "3"
[2]=>
string(1) "5"
}
首先,将用户的兴趣转换为简单数组。
$userInterestsSimple = array();
foreach ($userInterests as $userInterest)
$userInterestsSimple[] = $userInterest->interestId;
之后,使用in_array()
进行的检查将正常运行:
<option value="<?php echo $interest->interestID; ?>"
<?php
echo (in_array($interest->interestID, $userInterestsSimple)) ? ' selected="selected"' : '';
?>
>
<?php echo $interest->interestName; ?>
</option>