如何使用PHP将base10数字转换为数组

时间:2015-02-17 02:17:43

标签: php arrays base typeconverter

含义是:如何在单个数据库字段中存储多个值,例如Optin数据。

为了做到这一点,我要知道如何编码和解码值。 我有一个具有不同optin值的数组:

$optin = array (
    '1' => 'SMS',
    '2' => 'Email',
    '4' => 'Mail',
    '8' => 'AppsPushNotif',
    '16' => 'Partners',
    '32' => 'Gaming Partners'
);

ie。:我会在optin字段中存储: - 如果用户选择加入短信,电子邮件和邮件(4 + 2 + 1),则为“7” 要么 - AppsPushNotif和Gaming_Partners的'40'

我想找到一种方法将7或40个值解码为具有optin数组值的数组。

非常感谢

PS:感谢Cyclone的解决方案:

$output = '';
$value = 40;
$keys = array_keys($food);  

foreach($keys as $key) {   
    if($value & $key) $output .= $food[$key].',';  
}  

print rtrim($output, ',');

2 个答案:

答案 0 :(得分:0)

一行中的解决方案,将$value解包为$optin中显示为关键字的各个值:

$value = 40;

$keys = array_map(
    function($i) { return 1 << $i; },
    array_keys(array_filter(str_split(strrev(decbin($value)))))
);

print_r($keys);

输出结果为:

Array
(
    [0] => 8
    [1] => 32
)

答案 1 :(得分:0)

这应该有效:

$output = ''; 
$value = 40; 
$keys = array_keys($food); 

foreach($keys as $key) { 
  if($value & $key) 
    $output .= $food[$key].','; 
} 
print rtrim($output, ',');