【问题标题】:PHP: How to get a range from array?PHP:如何从数组中获取范围?
【发布时间】:2015-06-12 22:59:51
【问题描述】:

如果我有一个数组,例如,

$numarray = array("abc", "def", "ghi", "jkl", "mno");

如何选择起点和终点之间的值。如果起点是“def”,终点是“jkl”,那么它应该返回“def”、“ghi”和“jkl”。开始和结束字符串是动态的,所以它应该匹配然后返回值的范围。

【问题讨论】:

  • 你试过了吗?
  • @Rizier123 我只是不知道从哪里开始。我记得我知道如何在 javascript 中执行此操作。我不知道 substr 是否与此有关,但我所知道的是 javascript 中有一些函数可以做到这一点。
  • 范围是什么意思?您是指数组中某个部分的值,还是介于上下限之间的值(例如array(1,3,4,8, 2),所有值都在 3 和 5 之间)?
  • @DaanWilmer 有 html 表单,它有 2 个输入字段。用户可以在第一个字段中键入任何起始值,在另一个字段中键入最后一个值,脚本将返回这两个值之间的所有内容,包括起始值和结束值。

标签: php arrays


【解决方案1】:

这应该适合你:

只需从您的数组中取出一个array_slice()

<?php

    $numarray = array("abc", "def", "ghi", "jkl", "mno");
    $start = "def";
    $end = "jkl";   
    $startPosition = array_search($start, $numarray);
    $endPosition = array_search($end, $numarray) - $startPosition + 1;

    print_r(array_slice($numarray, $startPosition, $endPosition));

?>

输出:

Array
(
    [0] => def
    [1] => ghi
    [2] => jkl
)

【讨论】:

  • $endPosition = $startPosition - array_search($end, $numarray) + 1; 必须是$endPosition = array_search($end, $numarray) - $startPosition + 1;;无论如何都要 +1
【解决方案2】:

为了什么目的调用这么多函数。使不完整的数组通过

$numarray = array("abc", "def", "ghi", "jkl", "mno");
$start = "def";
$end = "jkl";
$out = false;

$new = array ();

foreach($numarray as $item) {
  if ($item == $start) $out = true;
  if ($out) $new[] = $item;
  if ($item == $end) break;
}

print_r($new);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2016-06-23
    • 2021-06-30
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多