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 Byuse
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';