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"

CodePad

于 2011-06-06T11:48:46.493 に答える
3

ループを使用しない@alex回答の実装:

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

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

CodePad

于 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];

配列は1ではなく0からカウントされるため、アイテム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 に答える