1

希望我的标题能解释清楚!这里有更多细节:

我正在创建一个存储键及其值的数组。例如。

test1 = hello
test2 = world
test3 = foo

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

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

test6 = blah
test45 = boo
test23 = far
4

4 回答 4

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"

键盘

于 2011-06-06T11:48:46.493 回答
3

不使用循环实现@alex answer:

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

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

键盘

于 2011-06-06T12:19:34.637 回答
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。

于 2011-06-06T11:55:16.557 回答
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
}
于 2011-06-06T11:55:54.307 回答