$records = array(
'123PP' => 3.63,
'123DDD' => 9.63,
'123D' => 6.63,
'123PPPP' => 9.63,
'123DD' => 9.63,
'123P' => 2.63,
'123PPP' => 1.53
);
遍历记录后,我只需要得到一个键应该是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);
}
但我想知道是否可以通过不存储每个键的字符串长度来优化这段代码。