【问题标题】:PHP array find two numbers are one after anotherPHP数组查找两个数字是一个接一个
【发布时间】:2018-09-15 09:10:09
【问题描述】:

我有一个带有这些 stop_id 的排序数组。

1, 6、 13, 18, 31,

我只想找到给定的第一个搜索值(6)在第二个给定值(31)之前。我尝试过这样的事情。这意味着查找顺序应该是,首先是 (6),然后是 (13),而不是 (13),然后是 (6)。

foreach ($parent_array as $key => $value) {
    $k = $key;
    sort($routes); //another array with above values(stop_ids)
    $st = 0;
    foreach ($routes as $key => $value) {
       if($st == 1){
         unset($parent_array[$k]);
         break;    
       }
       elseif($value->stop_id == 31){
         $st = 1;
         continue;
       }
    }
}
return $parent_array;

我可以提供两个值。这里我只使用了第二个值(31)。有什么帮助???

【问题讨论】:

  • 如果数组已排序,那么您不能检查它是否包含两个元素吗?最低的永远是第一。
  • @iainn 嘿.. 这些 1,6,13(根据以下答案)总是不一样。有时该数组可能看起来像 2,12,9,10.... 我只想知道我给定的第一个值是否为 6,是在我的第二个值 31 之前
  • 所以数组没有排序?还是有两个数组?你的问题不是很清楚。
  • 没有。我对数组进行排序以获得数字出现顺序。好的,请忽略该排序部分。我只想知道我给定的第一个值是否是(6),是在我的第二个值之前(31)
  • 好的,那么你得到的答案有什么问题?这正是它的作用。

标签: php arrays search


【解决方案1】:

获取每个数字所在的数组键,并比较这些键:

function firstNumberFirst($array, $first_number, $second_number) 
{
    return array_search($first_number, $array) < array_search($second_number, $array);
}

$a = [1, 6, 13, 18, 31];     
var_dump(
    firstNumberFirst($a, 6, 13),
    firstNumberFirst($a, 6, 18),
    firstNumberFirst($a, 13, 6)
);

如果数组不是零索引的 - 首先应用 array_values

【讨论】:

  • 嘿.. 这 1,6,13 总是不是那样的。有时该数组可能看起来像 2,12,9,10.... 我只想知道我给定的第一个值是否为 6,是在我的第二个值 31 之前
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
相关资源
最近更新 更多