【问题标题】:Multiple arrays searching and return the arrays where a value fits多个数组搜索并返回值适合的数组
【发布时间】:2018-01-23 08:19:21
【问题描述】:

我是 php 的一个小新手,我很难解决这个问题。 我有以下结构:

X1...X2...X3 .....X20

1...2....8

2...3...11

4...6....18

6...9....13

8...10...16

10...11...18

...等等

每行 30 行。

现在我有一个变量,假设 $var=7。 如何返回它找到的列的值。在这种情况下,结果应该是 X1,X2。

如果 $var=16 结果应该是 X3 如果 $var =10 结果应该是 X1,X2,X3。

提前谢谢你!

【问题讨论】:

  • 我不了解您的数据结构以及您要查找的内容。你能澄清一下吗?
  • 我重新编辑了帖子,因为它是一团糟:)。
  • 我的方法是为每个 x 定义数组...类似于 $x1 = array (1,2,4,6,8,10), $x2 等.....然后找到数组范围所在的值 $var。在我的示例中,$var=7 在数组的 X1 范围和 X2 中。

标签: php arrays search


【解决方案1】:

我会将您的所有范围放入一个数组中,对其进行迭代并使用 in_array 查找包含您搜索内容的范围。

$ranges = [
    'x1' => [1,2,8],
    'x2' => [2,3,11],
    'x2' => [4,6,18]
];
$res = [];
$search = 4;
foreach(ranges as $rangeName => $range){
    if(in_array($range,$search)){
        $res[] = $rangeName;
    }
}

【讨论】:

    【解决方案2】:

    谢谢,经过一些改进后,它可以工作了。

    <?php 
    $ranges = [
        'x1' => [1,2,8],
        'x2' => [2,3,11],
        'x3' => [5,6,18],
    ];
    $res = [];
    $search = 4;
    foreach($ranges as $rangeName => $range){
     $min = min($range);
     $max = max($range);
    $interval=range($min,$max);
        if(in_array($search,$interval)){
            $res[] = $rangeName;
    echo $rangeName."<br/>";
        }
    }
    ?> }
    

    这已解决,但仅适用于整数!

    现在,最困难的部分 :)... 如果范围是带有 2 位小数的浮点数 'x4' => [0.27,1.93,8.92],即使 $search =4 在范围内,代码也不会发现它是一个“好的范围”。 在我的真实应用程序中,范围和 $search 数字浮动 2 位小数... 那么,有什么想法吗?

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 2013-08-29
      • 2015-08-21
      • 2012-01-15
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2015-11-11
      相关资源
      最近更新 更多