我想知道如何以不同的方式做到以下几点,因为我觉得我这样做是错误的,会让开发人员感到畏缩。
$ prodcat是一个带有id的数组,我想在某些id在数组中时发出警告。这就是我现在所做的,它确实做到了,但我确信有一种更有效的编码方式。
$valuecheck = false;
foreach ($prodcat as $daafid) {
if (($daafid == '96') || ($daafid == '97') || ($daafid == '99') || ($daafid == '122') || ($daafid == '123') || ($daafid == '124') || ($daafid == '125') || ($daafid == '126') || ($daafid == '127') || ($daafid == '128') || ($daafid == '129') || ($daafid == '130') || ($daafid == '132') || ($daafid == '133')) {
$valuecheck = true;
}
}
if ($valuecheck == true) {
echo $text_true;
}
提前多多感谢。
答案 0 :(得分:1)
试试array_intersect。如果您要检查的ID是您的代码似乎指示的字符串,它也将起作用。当且仅当(字符串)$ elem1 ===(字符串)$ elem2时,array_intersect
认为两个元素相等。换句话说:当字符串表示相同时。
$ids = Array(96, 97, 99, 122, ...);
if(array_intersect($ids, $prodcat));
echo $text_true;
}
答案 1 :(得分:1)
我已经给出了2个示例,具体取决于您是否每次在数组中遇到类别ID时输出消息,或者只是在条件发生时显示的消息 at所有
// Array of category ID's to check against.
$daafids_array = [96,97,99,122,123,124,125,126,127,128,129,130,131,132,133];
// Initialise an empty array to hold the warning message if it occurs.
$warning = [];
// Loop through each $prodcat
foreach ($prodcat as $daafid) {
// Check if the ID is within the array
if (in_array($daafid, $daafids_array)) {
// Build up the array with the message if it occurs.
$warning[$daafid] = $text_true;
}
}
// Show warnings and the corresponding category ID every time it's happened.
if (!empty($warning)) {
foreach ($warning as $key => $value) {
echo $value . ' - for category ID ' . $key . '<br>';
}
}
// Just show 1 warning once if it *ever* encounters the condition
if (!empty($warning)) {
echo $text_true;
}
如果$warning
仍为空,则不会显示任何内容,因为无法显示任何内容(echo
中未找到$prodcat
中的ID)。
答案 2 :(得分:1)
我只想为ID制作白名单并使用in_array()
进行检查你不需要检查是否,因为in_array总是返回true 或者是假的。
并且不要忘记使用=== for $ valuecheck === true
$valuecheck = false;
$whiteListedIds = [96,97,99,122,123,124,125,126,127,128,129,130,131,132,133];
foreach ($prodcat as $daafid) {
$valuecheck = in_array($daafid, $whiteListedIds);
}
if ($valuecheck === true) {
echo $text_true;
}
答案 3 :(得分:0)
在Array函数中可能会更好。 参考:https://www.w3schools.com/php/func_array_in_array.asp
答案 4 :(得分:0)
你可以这样做。
解决方案1:
这里我们使用array_intersect
来检查两个数组之间的公共值。
<?php
ini_set('display_errors', 1);
$valuecheck = false;
$daafids=array(96,97,99,122,123,124,125,126,127,128,129,130,131,132,133);
if(count(array_intersect($prodcat, $daafids))>0)
{
$valuecheck=true;
}
这里我们使用in_array
来搜索数组中的特定元素。
解决方案2:
<?php
ini_set('display_errors', 1);
$valuecheck = false;
$daafids=array(96,97,99,122,123,124,125,126,127,128,129,130,131,132,133);
foreach ($prodcat as $daafid) {
if(in_array($daafid,$daafids)){
$valuecheck=true;
break;
}
}
if ($valuecheck == true) {
echo $text_true;
}