我有这个数组:
Array
(
[10:00:00] => 15
[10:30:00] => 15
[11:00:00] => 8
)
我需要查看它们是否等于15,如果有的话。 将来会添加更多项目。这些项目是所有时间段,右边的数字是预订量。每个时段的预订不超过15个。
时间将以表格形式显示为选择选项。我要么需要全部显示并禁用已预订的内容,要么仅显示可用的广告位。
另一种方法是查找所有不等于15的那些,然后将它们添加到选择中。
我当然会包括一些服务器端验证,以停止将15个以上的分配给一个时隙。
答案 0 :(得分:2)
这是一种实现方式...
if (in_array(15, $myArray)) {
// Do something
}
...如@AbraCadaver所述,它来自https://php.net/manual/en/function.in-array.php的官方PHP手册
答案 1 :(得分:2)
要获取所有不等于15的数组:
$result = array_filter(function($v) { return $v != 15; }, $array);
要检查某个值是否在数组中,可以使用in_array,但是对于您的用例,您希望从选择的值中消除所有15个值。因此,只需构建所需的数组即可。
Andreas的评论起初并未出现在我身上,但我通常会这样做:
$result = array_diff($array, [15]);
答案 2 :(得分:0)
您可以将array_count_values()
与isset()
一起使用。
if(isset(array_count_values($myArray)[15])) {
//do something
}
基本上,array_count_values()
将返回一个数组,以您的示例为例:
[15 => 2, 8 => 1]
每个值出现在原始数组中的次数是多少。然后,我们使用isset()
来检查密钥15
是否存在于array_count_values()
的输出中。
答案 3 :(得分:0)
php中有多种内置方法可以解决此问题。
其中一些。
这是对它们的处理方式
in_array
if (in_array(15, $array)) // do your stuff here
array_search
if (array_search(15, $array) !== false) // do your stuff here
array_filter
if (! empty(array_filter($array, function ($a) { return $a == 15; })) // do your stuff here
array_reduce
if (array_reduce($array, function ($c, $d) { return $c = $c == 15 || $d == 15 ? 15 : 0; }) -- 15) // do your stuff here
array_diff
if (count(array_diff($array, [ 15 ])) != count($array)) // do your stuff here
array_intersect
if (! empty(array_intersect($array, [15]))) // do your stuff here
还有更多方法,具体取决于您使用的逻辑。
答案 4 :(得分:0)
由于要显示select
框,因此无论如何都需要遍历数组。这样做之前唯一有意义的条件可能是是否已预订所有所有广告位。然后,您可能根本不想显示<select>
,而是需要注意一些。看至少有一个是15
,似乎不是有意义。
count($slots) === (array_count_values($slots)[15]??0)
为true。
生成启用/禁用<options>
或根本没有<select>
框的完整代码如下:
$slots =
[
'10:00:00' => 15,
'10:30:00' => 15,
'11:00:00' => 8,
];
if(count($slots) === (array_count_values($slots)[15]??0))
{
?>
<div>No slots are available anymore.</div>
<?php
}
else
{
?>
<select name="slot">
<option value="">select a time slot</option>
<?php
foreach ($slots as $k=>$v)
{
$avail = 15-intval($v);
?>
<option value="<?php echo $k;?>"<?php if($avail < 1) echo ' disabled'?>><?php echo "$k ($avail available)";?></option>
<?php
}
?>
</select>
<?php
}