私はコメントで述べたように、あなたは、配列の散歩を使用することができます奇数/興味深い何
$result = array();
$array = [0.1, 0.2, 1.1, 2.0, 2.5];
array_walk($array, function (&$value) use (&$result) {
$result[(string)$value] = ($value * 100) . '%';
});
var_dump($result);
出力
array(5) {
["0.1"]=> string(3) "10%"
["0.2"]=> string(3) "20%"
["1.1"]=> string(4) "110%"
[2]=> string(4) "200%" /// <-- int
["2.5"]=> string(4) "250%"
}
私は注目です2は文字列ではありません。とにかく、小数点以下1桁が必要な場合は、代わりにnumber_format
でこのバージョンを使用できます。
$result = array();
$array = [0.1, 0.2, 1.1, 2.0, 2.5];
array_walk($array, function (&$value) use (&$result) {
$result[number_format($value,1)] = ($value * 100) . '%';
});
var_dump($result);
出力
array(5) {
["0.1"]=>
string(3) "10%"
["0.2"]=>
string(3) "20%"
["1.1"]=>
string(4) "110%"
["2.0"]=>
string(4) "200%"
["2.5"]=>
string(4) "250%"
}
がより多くの小数点以下の桁数があるか、彼らが可変である場合は、小数点以下の桁数をカウントし、私は、少なくとも2の考えることができるnumber_format
への第2の入力としてことを使用することができますそれを行う方法。
あなたは
まずここでそれらをテストすることができます。
http://sandbox.onlinephpfunctions.com/code/30ec8bdc191095ac92a681b3f8fc964c66360c86
第二:
http://sandbox.onlinephpfunctions.com/code/e02d45e6d02e79a2440110b7ffe6df93e76920d3
ます場合、私はちょうど、小数点以下の事を考えていましたワ彼らは少なくとも1つの小数を持っていることを保証するために、しかしいくつかは、あなたがそれをこのようにすることができますより多くを持つことができます。
array_walk($array, function (&$value) use (&$result) {
$key = (string)$value;
if(strlen($key) == 1)
$key = number_format($key, 1);
$result[$key] = ($value * 100) . '%';
});
あなたは、単にフロート「2.1」の文字列表現に変換することができたものでnumber_format
を呼び出さないので、これはまた、それより高速なマイクロ秒の数分のなるかもしれません。しかし、小数点以下1桁があるときに後続の0を切り捨てるとしても、「1.10」は「1.1」になりますが、少なくともそれらはすべて浮動小数点になります。
あなたは、私がこれを説明するために、「1.101」と「1.10」のような、値の数を変更し、ここで
http://sandbox.onlinephpfunctions.com/code/e836076f7ee6c2e684d4ccca016101b288649f29
(注)この1を見ることができます。
申し訳ありませんが、浮動小数点キーは配列には使用できません。 –
@u_mulder、ありがとう、私はキーを修正した。私の疑問の根本的なアイデアはまだ残っています。私はキーを修正したので私の質問を見てください。ありがとう! – Ryan
これらの 'array_walk'を使うことができますが、クロージャの' use'部分を使わなければなりません。このQ&Aを参照してください。https://stackoverflow.com/questions/13271015/changing-array-keys-in-array-walk-function – ArtisticPhoenix