想要简化这个数组:
$week = array(7) {
[0]=> string(10) "2017-11-05"
[1]=> string(10) "2017-11-06"
[2]=> string(10) "2017-11-07"
[3]=> string(10) "2017-11-08"
[4]=> string(10) "2017-11-09"
[5]=> string(10) "2017-11-10"
[6]=> string(10) "2017-11-11"
}
为:
$week = "2017-11-05", "2017-11-06", "2017-11-07", "2017-11-08", "2017-11-09", "2017-11-10", "2017-11-11";
并为我的$ date数组做同样的事情
$date = array(2) { [0]=> string(10) "2017-11-08" [1]=> string(10) "2017-11-22" }
原因是我试图根据另一个数组中的值在数组中找到匹配项。在让in_array返回true时遇到问题。
示例:
if (in_array($date, $week)) {
echo "No Class!";
} else { echo "Stuff"; }
答案 0 :(得分:1)
由于var_dump
如何输出它们,您的数组可能看起来很复杂,但它们等同于:
$week = ["2017-11-05", "2017-11-06", "2017-11-07", "2017-11-08", "2017-11-09", "2017-11-10", "2017-11-11"];
$date = ["2017-11-00", "2017-11-22"];
使用array_intersect
,您可以知道它们是否具有共同的字符串值:
if (array_intersect($date, $week)) {
echo "match";
} else {
echo "no match";
}
实际上,该函数将交集作为数组返回,因此您甚至可以从结果中知道哪些字符串在两个数组中都是通用的。但是,如果您只需要知道是否存在至少一个公共值,则上述if
条件就可以。
答案 1 :(得分:0)
您尝试的内容无效,因为没有数组就不能有多个字符串:
首先,我建议你检查php-array,以便更好地理解数组如何在php中工作。
但我明白了背后的想法,其方法如下:
$weeks = ["2017-11-05", "2017-11-06", "2017-11-07", "2017-11-08", "2017-11-09", "2017-11-10", "2017-11-11"];
$dates = ["2017-11-08", "2017-11-22"];
$matches = array_map(function($date) use ($weeks) {
return in_array($date, $weeks);
}, $dates);
var_dump($matches);
看到它正常工作here: