Самый чистый способ определить следующее имя переменной на основе последовательного порядка? - PullRequest
1 голос
/ 06 июня 2011

Надеюсь, мой титул объясняет это нормально!Вот более подробно:

Я создаю массив, в котором хранятся ключи и их значения.Например,

test1 = hello
test2 = world
test3 = foo

Какой самый чистый способ определить, как назвать следующий ключ?Допустим, я буду знать, что первая часть - это «тест», но я не знаю, что такое наибольшее значение.Очевидно, что в этом случае я хочу, чтобы он назывался «test4».

В следующем примере я хочу, чтобы следующим ключом был «test46», так как это следующее наибольшее значение:

test6 = blah
test45 = boo
test23 = far

Ответы [ 4 ]

7 голосов
/ 06 июня 2011

Похоже, вы должны использовать вместо этого массив с числовыми индексами.

Однако вы можете использовать такой код, как этот ...

$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 .

3 голосов
/ 06 июня 2011

Реализация ответа @ alex без использования цикла:

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

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

CodePad

1 голос
/ 06 июня 2011

Для чего вы это используете? Если нумерация массива является обязательной, просто используйте вместо этого простой числовой индексированный массив и просто добавьте ключ с «test», если вам необходимо, чтобы он отображался как «test1»:

<?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
}
1 голос
/ 06 июня 2011

Эту структуру данных лучше хранить в виде массива.

$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.

...