PHP数组 - 在键和值中查找值

时间:2015-03-13 14:35:40

标签: php arrays matrix

我有一些数据。

首先我有几天,例如:

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

  • 如何才能从第1天开始获取所有值?
  • 如何才能从pricegroup pro获得所有值?

3 个答案:

答案 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_1pricegroup 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>';