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]
来确定最高索引?您想知道最高索引还是最高值?