Php 解析出帖子的最后一个编号

Php 解析出帖子的最后一个编号,php,regex,parsing,post,Php,Regex,Parsing,Post,好的,我有一个帖子看起来像这样 [optional_premium_1] => Array ( [0] => 61 ) [optional_premium_2] => Array ( [0] => 55 ) [optional_premium_3] => Array ( [0] => 55 ) [premium_1] => Array ( [0]

好的,我有一个帖子看起来像这样

[optional_premium_1] => Array
    (
        [0] => 61
    )
[optional_premium_2] => Array
    (
        [0] => 55
    )
[optional_premium_3] => Array
    (
        [0] => 55
    )
[premium_1] => Array
  (
     [0] => 33
 )
[premium_2] => Array
  (
     [0] => 36     )
[premium_3] => Array
  (
     [0] => 88     )

[premium_4] => Array
  (
     [0] => 51
 )

我怎样才能从中得到最高的数字呢。例如,可选的“可选”最高值为3,“可选”最高值为4。我如何在这篇$_帖子中找到最高的

虽然效果不佳,但您可以尝试以下方法

$largest = 0;

foreach($_POST as $key => $value)
{
    $len = strlen("optional_premium_");
    $num = substr($key, $len);

    if($num > $largest)
        $largest = $num;
}

print_r($largest);
[optional_premium_1] => Array
(
    [0] => 61
    ["key"] => 1
)
[optional_premium_2] => Array
(
    [0] => 61
    ["key"] => 2
)
问题是,这只适用于一组类别。它很可能会在整个脚本中出现错误

理想情况下,您希望重新组织您的帖子,使每个数组类似

$largest = 0;

foreach($_POST as $key => $value)
{
    $len = strlen("optional_premium_");
    $num = substr($key, $len);

    if($num > $largest)
        $largest = $num;
}

print_r($largest);
[optional_premium_1] => Array
(
    [0] => 61
    ["key"] => 1
)
[optional_premium_2] => Array
(
    [0] => 61
    ["key"] => 2
)

然后只需使用foreach并使用$array[“key”]进行搜索。

虽然无效,但您可以尝试以下方法

$largest = 0;

foreach($_POST as $key => $value)
{
    $len = strlen("optional_premium_");
    $num = substr($key, $len);

    if($num > $largest)
        $largest = $num;
}

print_r($largest);
[optional_premium_1] => Array
(
    [0] => 61
    ["key"] => 1
)
[optional_premium_2] => Array
(
    [0] => 61
    ["key"] => 2
)
问题是,这只适用于一组类别。它很可能会在整个脚本中出现错误

理想情况下,您希望重新组织您的帖子,使每个数组类似

$largest = 0;

foreach($_POST as $key => $value)
{
    $len = strlen("optional_premium_");
    $num = substr($key, $len);

    if($num > $largest)
        $largest = $num;
}

print_r($largest);
[optional_premium_1] => Array
(
    [0] => 61
    ["key"] => 1
)
[optional_premium_2] => Array
(
    [0] => 61
    ["key"] => 2
)

然后使用
foreach
并使用
$array[“key”]
进行搜索。

在回答之前,我有一个包含两部分的问题,这就是为什么要使用嵌入式阵列?如果您使用以下标准符号,您的帖子会简单得多:

$_POST['form_input_name'] = 'whatever';
除非您出于某种原因专门使用数组构建本文。这样,您就可以正常使用数组键作为变量名和数组值

因此:

$arr = array(
"optional_premium_1" => "61"
"optional_premium_2" => "55"
);
你可以用

$key = array_keys($arr);
//gets the keys for that array
//then loop through get raw values

foreach($key as $val){
  str_replace("optional_premium_", '', $val);
}
//然后再次循环以比较每一个

$highest = 0;
for each($key as $val){
  if ((int)$val > $highest) $highest = (int)$val;
 }
这应该让你得到最高的一个,但你必须回去比较他们做任何你的最终计划


您也可以将它们分成两个单独的数组,并假设它们是按顺序添加的,只需使用end()

在回答之前,我有一个问题,共两部分,这就是为什么您要使用嵌入式数组?如果您使用以下标准符号,您的帖子会简单得多:

$_POST['form_input_name'] = 'whatever';
除非您出于某种原因专门使用数组构建本文。这样,您就可以正常使用数组键作为变量名和数组值

因此:

$arr = array(
"optional_premium_1" => "61"
"optional_premium_2" => "55"
);
你可以用

$key = array_keys($arr);
//gets the keys for that array
//then loop through get raw values

foreach($key as $val){
  str_replace("optional_premium_", '', $val);
}
//然后再次循环以比较每一个

$highest = 0;
for each($key as $val){
  if ((int)$val > $highest) $highest = (int)$val;
 }
这应该让你得到最高的一个,但你必须回去比较他们做任何你的最终计划


您还可以将它们分成两个单独的数组,并假设它们是按顺序添加的,只需使用end()

您可以使用array\u key\u exists(),可能类似于以下内容:

function getHighest($variableNamePrefix, array $arrayToCheck) {
    $continue = true;
    $highest = 0;
    while($continue) {
        if (!array_key_exists($variableNamePrefix . "_" . ($highest + 1) , $arrayToCheck)) {
            $continue = false;
        } else {
           highest++;
        }
    }
    //If 0 is returned than nothing was set for $variableNamePrefix 
    return $highest;
}

$highestOptionalPremium = getHighest('optional_premium', $_POST);
$highestPremium = getHighest('premium', $_POST);

您可以使用array_key_exists(),可能类似于:

function getHighest($variableNamePrefix, array $arrayToCheck) {
    $continue = true;
    $highest = 0;
    while($continue) {
        if (!array_key_exists($variableNamePrefix . "_" . ($highest + 1) , $arrayToCheck)) {
            $continue = false;
        } else {
           highest++;
        }
    }
    //If 0 is returned than nothing was set for $variableNamePrefix 
    return $highest;
}

$highestOptionalPremium = getHighest('optional_premium', $_POST);
$highestPremium = getHighest('premium', $_POST);

循环遍历所有POST数组元素,选择键名与“name_number”模式匹配的元素,并保存键名中数字部分最大的元素。下面是一个执行此操作的PHP脚本:


以下是脚本的输出:

数组
(
[可选\u premium]=>阵列
(
[名称]=>可选\u高级
[最大数量]=>3
[密钥\u名称]=>可选\u高级\u 3
[值]=>数组
(
[0] => 55
)
)
[高级]=>阵列
(
[名称]=>高级
[最大数量]=>4
[密钥名称]=>高级密钥4
[值]=>数组
(
[0] => 51
)
)
)

循环遍历所有POST数组元素,挑选出键名与“name\u number”模式匹配的元素,并保存键名中数字部分最大的元素。下面是一个执行此操作的PHP脚本:


以下是脚本的输出:

数组
(
[可选\u premium]=>阵列
(
[名称]=>可选\u高级
[最大数量]=>3
[密钥\u名称]=>可选\u高级\u 3
[值]=>数组
(
[0] => 55
)
)
[高级]=>阵列
(
[名称]=>高级
[最大数量]=>4
[密钥名称]=>高级密钥4
[值]=>数组
(
[0] => 51
)
)
)

当数组只包含一个元素时,为什么键指向数组?因为有时会有多个值,如何处理这些多个值?应该只使用
[0]
来确定最高值吗?您想知道最高索引还是最高值吗?当数组只包含一个元素时,为什么您的键指向数组?因为有时会有多个值,这些多个值应该如何处理?是否应仅使用
[0]
来确定最高索引?您想知道最高索引还是最高值?