php - 如何在 PHP 中检索 2 个标记之间的数组值?

标签 php arrays loops

我有一个值数组,所有字符串。数组中还有 2 个“标记”条目,表示后面的值是什么。基本上它是这样设置的:

$array['1','2','3','A','5','6','7','B','8','9']

我需要在 AB 之后检索数组索引。因此,在此示例中,索引为 5、6 和 7。

我正在考虑使用 forloop 和一些迭代 if 语句来做到这一点。但我似乎无法弄清楚。非常感谢任何帮助:)

编辑:还值得注意的是 A 和 B 并不总是在数组中的相同位置;有些用户在 A 和 B 之间的数据比其他用户多,有些则根本没有 A 和 B。但是如果 A 存在,我需要得到它后面的值。如果 A 和 B 存在,它们也将始终具有相同的值(A 和 B)。

EDIT2:这是我目前正在按照 PeeHaa 的建议尝试的方法。 A 是“已注册:当前”,B 是“已注册:下一个”。在他的测试中,他得到的值在 A 之后但在 B 之前,但是在我的测试中,我只得到 A 的值(“registered:current”)。它只输出“registered:current”,而不是 2 个标记之间存在的值。

function getValuesBetweenMarkers($theArray, $startMarker = 'registered:current', $endMarker = 'registered:next')
{
    $offset = array_search($startMarker, $theArray) + 1;
    $length = array_search($endMarker, $theArray) - $offset;

    return array_slice($theArray, $offset, $length, true);
}

最佳答案

我认为这应该可行:

$result = array();
$start = "A";
$stop = "B";
$push = false;
foreach($array as $value) {
    if ($value == $start) {
         $push = true;
    } else if ($value == $stop) {
        break;
    }
    if ($push) {
        $result[] = $value;
    }
}

关于php - 如何在 PHP 中检索 2 个标记之间的数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11852009/

相关文章:

php - AngularJS ngRoute 和 PHP $_SESSION 变量

php - 将逗号分隔的整数分解为整数?

php - 如果 PayPal 包含参数,则忽略返回 url

c++ - 两个数组,整数和字符串,如何显示带有相应整数的字符串?

javascript - 延迟循环遍历数组内容

javascript - 循环中的 jquery 动画返回相同的索引

php - 将鼠标悬停在 li 不显示 div 上

python - 从两个 Numpy 数组中删除相应的条目

c - for 循环添加先前循环的结果

javascript - 嵌套的 JavaScript 循环如何自然中断