У меня есть некоторые данные.
Сначала у меня есть дни, например:
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,
)
Вопросы):
Вы можете построить свой массив другим способом?
$array = array(
1 => array(
"simple" => 1000,
"pro" => 5600,
),
15 => array(
"simple" => 2100,
"pro" => 12000,
),
);
Если вы можете сделать это, то вы можете просто использовать функцию индекса или массива, чтобы найти именно то, что вам нужно
Если у вас есть 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, сделайте простой для каждого:
$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;
Это может быть как решение с использованием 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>';