2015-03-13 50 views
0

我有一些数据。PHP数组 - 查找键和值中的值

首先我天,例如:

1,15,30,60,90

然后,我有pricegroups,例如:

简单,亲,精英,专家,新星

然后我有成本(价值数字)为每个价格组加上天:

$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?
+0

一个问题:什么呀你试试? – axiac 2015-03-13 17:02:36

回答

0

你可以用另一种方式构建你的数组?

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

如果你能做到这一点,那么你可以使用索引或阵列功能准确地找到你所需要的

0

如果你有php5.6使用array_filterARRAY_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; 
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>';