我有一个相当大的数组,我已经这样构建:http://pastebin.com/EQjerbcE我试图找到一种更有效的方法来取出这个数组的子集/切片。目前我这样做:
$valToken = $attrSizes[$array->Size]; //14
$sizeNames = [];
foreach ($attrSizes AS $key => $value)
{
if ($valToken === $value)
{
$sizeNames[] = $key;
}
if ($valToken < $value) break;
}
在我看来,循环不应该是答案,因为它效率很低。我确实在$valToken
小于$value
之后添加了一个要断开的子句,以确保在不需要时不运行完整循环。使用PHP中提供的所有数组方法,必须有更聪明,更有效的方法吗?
答案 0 :(得分:1)
尝试array_keys
:
$sizeNames = array_keys($attrSizes, $array->Size, true);
顺便说一句:我会像这样构造数组:
$attrSizes = [
0 => ['*NONE', ],
1 => ['XS (101)', 'S (102)', 'M (103)', 'L (104)', 'XL (105)', 'XXL (106)', 'XXXL (107)', ],
2 => ['Small x 31 (110)', 'Small x 33 (111)', ...],
...
];