数组中的PHP是';t寻找多个值
在我的函数中,数组中没有找到数字数组中的PHP是';t寻找多个值,php,Php,在我的函数中,数组中没有找到数字 function genNumbers($min, $max, $quantity, $qtd, $sumMin = false, $sumMax = false) { for ($i = 0; $i <= $qtd; $i++) { $numbers = range($min, $max); shuffle($numbers); $a = array_
function genNumbers($min, $max, $quantity, $qtd, $sumMin = false, $sumMax = false)
{
for ($i = 0; $i <= $qtd; $i++) {
$numbers = range($min, $max);
shuffle($numbers);
$a = array_slice($numbers, 0, $quantity);
asort($a);
$x = array(14, 17);
if (in_array($x, $a)) {
continue;
}
if ($sumMin) {
if (array_sum($a) < $sumMin)
continue;
}
if ($sumMax) {
if (array_sum($a) > $sumMax)
continue;
}
foreach ($a as $key => $o) {
if (end(array_keys($a)) == $key) {
$aux = '';
} else {
$aux = ' - ';
}
echo $o . $aux;
}
echo '<br />';
}
}
例如:
本例继续使用14和17返回值。
比如:
怎么了?谢谢 您在数组中使用的是错误的。它没有特别对待“针”。它寻找大海捞针的精确副本:
php > $foo = array(1,2,3);
php > var_dump(in_array(array(1,2),$foo));
bool(false)
php > $bar = array(array(1,2),array(2,3), array(3,4));
php > var_dump(in_array(array(1,2), $bar));
bool(true)
因此,您不能使用单个in_数组调用来检查是否存在多个值。您使用了错误的函数。为了实现这一点,快速查看php.net会告诉我们:-当您向下滚动一点时,它告诉我们,如果您想找到所有匹配的值,您应该使用带有
搜索值的数组键
,因此:
array_keys(haystack, needle)
上面的命令将返回一个匹配键的数组。例如:
$a = array(1,2,3,4);
$r = array_keys($a, 2);
// $r is now [1] (because the key of 1 contains the value 2)
您还可以通过将第三个参数作为true
传递给它来严格输入
来源:如果要检查数组中的任何值是否符合谓词,可以使用数组的此实现\u some
:
function array_some(callable $callback, array $arr) {
foreach ($arr as $element) {
if ($callback($element)) {
return TRUE;
}
}
return FALSE;
}
下面的示例说明了如何使用匿名(可调用)函数作为array\u some
的第一个参数,然后使用use
$x = array(14, 17);
$z = array(13, 17);
$a = array(14, 18, 19, 12);
if (array_some(function($e) use ($a) {
return in_array($e, $a);
}, $x)) {
echo "some element of \$x is in \$a\n";
} else {
echo "no element of \$x is in \$a\n";
}
if (array_some(function($e) use ($a) {
return in_array($e, $a);
}, $z)) {
echo "some element of \$z is in \$a\n";
} else {
echo "no element of \$z is in \$a\n";
}
正如预期的那样,输出为:
// => some element of $x is in $a
// => no element of $z is in $a
exact
如果您将$strict
设置为true
的话,副本将是精确的,但要遵守排版规则。但无论如何,您不能传入一个数组并期望in_数组检查该数组中的每个值。
$x = array(14, 17);
$z = array(13, 17);
$a = array(14, 18, 19, 12);
if (array_some(function($e) use ($a) {
return in_array($e, $a);
}, $x)) {
echo "some element of \$x is in \$a\n";
} else {
echo "no element of \$x is in \$a\n";
}
if (array_some(function($e) use ($a) {
return in_array($e, $a);
}, $z)) {
echo "some element of \$z is in \$a\n";
} else {
echo "no element of \$z is in \$a\n";
}
// => some element of $x is in $a
// => no element of $z is in $a