希望我的标题解释好了!这里有更多细节:
我正在创建一个存储密钥和数据的数组。他们的价值观例如
test1 = hello
test2 = world
test3 = foo
最简洁的方法是计算下一个键的名称?假设我会知道第一部分是“测试”,但我不知道最高值是多少。显然,在这种情况下,我希望它被称为'test4'。
在下面的示例中,我希望下一个键为'test46',因为它是下一个最高值:
test6 = blah
test45 = boo
test23 = far
答案 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"
答案 1 :(得分:3)
在不使用循环的情况下实现@alex回答:
$arr = array('test6', 'test45', 'test23');
$max = max(filter_var_array($arr, FILTER_SANITIZE_NUMBER_INT));
$newKey = 'test' . ++$max; // string(6) "test46"
答案 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
}