Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将整数与多维数组进行比较_Php_Arrays_Multidimensional Array_Callback_Compare - Fatal编程技术网

Php 将整数与多维数组进行比较

Php 将整数与多维数组进行比较,php,arrays,multidimensional-array,callback,compare,Php,Arrays,Multidimensional Array,Callback,Compare,我有下面的数组和一个数字$num,我试图检查$num是否等于每个元素的和到之间的范围。如果条件为true,则应返回该数组的对应或键,并停止进一步比较。我可以使用array\u walk实现这一点,但无法停止进一步的比较 Array ( [_1395216158966_966] => Array ( [from] => 1 [to] => 3 [rate] => 10

我有下面的数组和一个数字
$num
,我试图检查
$num
是否等于每个元素的
之间的
范围。如果条件为true,则应返回该数组的对应或键,并停止进一步比较。我可以使用
array\u walk
实现这一点,但无法停止进一步的比较

Array
(
    [_1395216158966_966] => Array
        (
            [from] => 1
            [to] => 3
            [rate] => 10
        )

    [_1395216219094_94] => Array
        (
            [from] => 3
            [to] => 6
            [rate] => 15
        )

    [_1395216219662_662] => Array
        (
            [from] => 6
            [to] => 9
            [rate] => 20
        )

)
当前代码

array_walk($data, array($this, 'CalculateWeightCharge'), $weight)

public function CalculateWeightCharge($data, $needle, $num)
    {

        if($num >= $data['from'] && $num <= $data['to']){
            return true;
        }

    }
array\u walk($data,array($this,'CalculateWeightCharge'),$weight)
公共函数CalculateWeightCharge($data,$needle,$num)
{
如果($num>=$data['from']&&$num
函数比较($array,$num){
foreach($key=>$value的数组){
如果($num>=$value['from']&&$num
函数fn($numbers,$num)
{
foreach($key=>$val的数字)
{

如果($num>=$val[“from”]&&&$num下面是用于检查
$num
是否在
$array
数组中的每个范围内的代码:

$result = array_filter($array, function ($v) use($num) {
    return $num >= $v['from'] && $num <= $v['to'];
})
if (count($result) == count($array)) echo 'TRUE';
$result=array\u过滤器($array,function($v)use($num){

返回$num>=$v['from']&&$num您必须使用
array\u filter
当前代码是什么?@AlmaDo检查当前代码code@hindmost你的建议很好,但我如何传递这个号码???@DepH By
use
construct()这与Andrey Mischenko的答案有什么不同?我写的是我自己的答案。我没有看到他发布的内容。我注意到你也包含了范围的每一端,所以你的答案实际上是正确的。是的,应该是>=但是
array\u filter
“迭代数组中的每个值”而问题是一旦找到匹配项就停止。@Tom Fenech是的。所以OP如果想要这样的效率,就必须使用循环(如前面的答案中所示)。没错,所以你的答案不能回答问题!
function fn($numbers, $num)
{
    foreach($numbers as $key=>$val)
    {
         if($num >= $val["from"] && $num <= $val["to"])
         {
            return $key;
         }
    }

    return null;
}
$result = array_filter($array, function ($v) use($num) {
    return $num >= $v['from'] && $num <= $v['to'];
})
if (count($result) == count($array)) echo 'TRUE';