$records = array(
'123PP' => 3.63,
'123DDD' => 9.63,
'123D' => 6.63,
'123PPPP' => 9.63,
'123DD' => 9.63,
'123P' => 2.63,
'123PPP' => 1.53
);
レコードをループした後、優先順位が , , , , , ... であるため、キーが必要な値を 1 つだけ取得する必要があり123D
ます
。123D
123P
123DD
123PP
123DDD
123PPP
123PPPP
例:
123D
配列に が見つからない場合は、それ123P
が答えです。123P
配列に が見つからない場合は、それ123DD
が答えです。
そして、私は解決策を見つけました:
foreach ($records as $key => $value) {
if (empty($this->minLength)) {
$this->invoiceTax = $value;
$this->minLength = strlen($key);
}
elseif (strpos($key, 'P') !== false && (strlen($key) < $this->minLength)) {
$this->invoiceTax = $value;
$this->minLength = strlen($key);
}
elseif (strpos($key, 'D') !== false && (strlen($key) <= $this->minLength)) {
$this->invoiceTax = $value;
$this->minLength = strlen($key);
}
しかし、すべてのキーの文字列の長さを保存しないことで、このコードを最適化できるかどうかを知りたいです。