PHP массив — найти значения в ключах и значениях

У меня есть некоторые данные.

Сначала у меня есть дни, например:

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,
)

Вопросы):

  • Как я могу получить все значения только с первого дня?
  • Как я могу получить все значения только от ценовой группы Pro?

0

Решение

Вы можете построить свой массив другим способом?

$array = array(
1 => array(
"simple" => 1000,
"pro" => 5600,
),
15 => array(
"simple" => 2100,
"pro" => 12000,
),
);

Если вы можете сделать это, то вы можете просто использовать функцию индекса или массива, чтобы найти именно то, что вам нужно

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, сделайте простой для каждого:

$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;
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>';
0
По вопросам рекламы [email protected]