我有一些数据。
首先我有几天,例如:
1,15,30,60,90
然后我有价格组,例如:
简单,亲,精英,专家,新星
然后我将每个价格组的成本(价值数字)与天数相结合:
$array = array(
'day_1_simple' => 1000,
'day_15_simple' => 2100,
'day_30_simple' => 5600,
'day_1_pro' => 900,
'day_60_pro' => 1700,
'day_90_pro' => 1900,
'day_1_elite' => 10,
'day_30_elite' => 200,
)
问题(S):
答案 0 :(得分:0)
您可以用其他方式构建数组吗?
$array = array(
1 => array(
"simple" => 1000,
"pro" => 5600,
),
15 => array(
"simple" => 2100,
"pro" => 12000,
),
);
如果你能做到这一点,那么你可以使用索引或数组函数来准确找到你需要的东西
答案 1 :(得分:0)
如果你有php5.6使用带有array_filter
参数的ARRAY_FILTER_USE_KEY
函数:
$array = array();
// consider day 1 is _1_ in a key
$day_one = array_filter($array, function($k) {
return strpos($k, '_1_') !== false;
}, ARRAY_FILTER_USE_KEY);
// consider pro is _pro in a key
$only_pro = array_filter($array, function($k) {
return strpos($k, '_pro') !== false;
}, ARRAY_FILTER_USE_KEY);
这甚至可以简化为单一功能:
$filter = '_1_'; // for example
$filtered = array_filter($array, function($k) use ($filter) {
return strpos($k, $filter) !== false;
}, ARRAY_FILTER_USE_KEY);
如果您的php不是5.6,那么请执行简单的 foreach :
$array = array();
// consider day 1 is _1_ in a key
$day_one = array();
foreach ($array as $k => $v)
if (strpos($k, '_1_') !== false)
$day_one[$k] = $v;
// consider pro is _pro in a key
$only_pro = array();
foreach ($array as $k => $v)
if (strpos($k, '_pro') !== false)
$only_pro[$k] = $v;
答案 2 :(得分:0)
这可以作为使用preg_match
的解决方案,尝试这种方式来过滤day_1
和pricegroup pro
数组
$day_1=[];
$price_group_pro=[];
foreach (array_keys($array) as $key) {
if (preg_match('/^day_1_/', $key)) {
$day_1[$key]=$array[$key];
}
if (preg_match('/_pro$/', $key)) {
$price_group_pro[$key]=$array[$key];
}
}
echo '<pre>';
print_r($day_1)
print_r($price_group_pro);
echo '</pre>';