根据连续顺序计算下一个变量名的最简洁方法?

时间:2011-06-06 11:47:26

标签: php variables key sequential

希望我的标题解释好了!这里有更多细节:

我正在创建一个存储密钥和数据的数组。他们的价值观例如

test1 = hello
test2 = world
test3 = foo

最简洁的方法是计算下一个键的名称?假设我会知道第一部分是“测试”,但我不知道最高值是多少。显然,在这种情况下,我希望它被称为'test4'。

在下面的示例中,我希望下一个键为'test46',因为它是下一个最高值:

test6 = blah
test45 = boo
test23 = far

4 个答案:

答案 0 :(得分:7)

这听起来像你应该使用带有数字索引的数组。

但是你可以使用这样的代码......

$arr = array('test6', 'test45', 'test23');
$max = 0;

foreach($arr as $value) {
    $number = filter_var($value, FILTER_SANITIZE_NUMBER_INT);
    $max = max($max, $number);
}

$newKey = 'test' . ++$max; // string(6) "test46"

CodePad

答案 1 :(得分:3)

在不使用循环的情况下实现@alex回答:

$arr = array('test6', 'test45', 'test23');
$max = max(filter_var_array($arr, FILTER_SANITIZE_NUMBER_INT));

$newKey = 'test' . ++$max; // string(6) "test46"

CodePad

答案 2 :(得分:1)

这种数据结构最好存储为数组。

$test = array();
$test[] = 'hello';
$test[] = 'world';
$test[] = 'foo';

然后您不需要知道添加新项目的最大数字,只需使用空括号语法(如上所示)将项目添加到数组的末尾。

然后您可以访问PHP为您提供的大量数组函数:http://php.net/manual/en/ref.array.php

如果要从数组中获取项目43,请使用:

echo $test[42];

数组从0开始计数而不是1,因此第43项的索引为42。

答案 3 :(得分:1)

你用的是什么?如果对数组进行编号是必须的,那么只需使用一个简单的数字索引数组,如果需要将它显示为“test1”,只需在密钥前加上“test”:

<?php

$array = array(
    6 => 'blah',
    45 => 'boo',
    23 => 'bar'
);

$array[] = 'new';

echo $array[46] . "\n"; // this is 'new'

foreach( $array as $key => $value ) {
    echo "test$key = $value<br />\n"; // test6 = blah
}