我在查詢一個數據庫,它返回一個長整數的布爾值。例如0011000000000100001000000010000000000100000000000000.來自php整數的布爾值
1個值中的每一個等同於一個字符串。例如。空調或動力轉向。如果該值爲0,則車輛不具有此選項。
我想找出一種方法來循環這個大整數,並返回該車的每個「選項」的名稱。
我對PHP很陌生,非常感謝幫助,如果任何人有解決方案。
非常感謝 安德魯
我在查詢一個數據庫,它返回一個長整數的布爾值。例如0011000000000100001000000010000000000100000000000000.來自php整數的布爾值
1個值中的每一個等同於一個字符串。例如。空調或動力轉向。如果該值爲0,則車輛不具有此選項。
我想找出一種方法來循環這個大整數,並返回該車的每個「選項」的名稱。
我對PHP很陌生,非常感謝幫助,如果任何人有解決方案。
非常感謝 安德魯
這是最有可能的一個字符串,您可以通過它和每一個剛迭代,在地圖查找名稱:
$option_map = array(
'Air Conditioning',
'Sun roof',
'Power Steering',
'Brakes',
//.. Fill with all options
// Could populate from a database or config file
);
$str = '0011000000000100001000000010000000000100000000000000';
$strlen = strlen($str);
for($i = 0; $i < $strlen; $i++){
if($str[$i] === '1'){
$options[] = $option_map[$i];
}
}
// $options is an array containing each option
Demo Here。數組中有空選項,因爲選項圖不完整。它正確地填寫了「動力轉向」和「制動器」,對應於字符串中的前兩個1
。
我會推薦這樣的東西。
get_car_option
並傳遞位置以及值//force the value to be a string, where $longint is from your DB
$string = (string) $longint;
for($i=0; $i<strlen($string); $i++)
{
$array[$i] = get_car_option($i, substr($string, $i, 1));
}
//example of function
function get_car_option($pos, $value)
{
//you can then use this function to get the
//...values based on each number position
}
喜歡的東西:
$myVal = 170; //10101010 in binary
$flags = array(
'bumpers' => 1, //00000001
'wheels' => 2, //00000010
'windshield' => 4, //00000100
'brakes' => 8, //00001000
...
);
echo "The car has: ";
foreach($flags as $key => $value) {
if($myVal & $value) {
echo $key . " and ";
}
}
// Output: Car has: wheels and brakes and
你也可以使用右移>>
運營商,通過兩個大國去,但我沒有足夠的無聊編寫代碼。
它是一個整數或布爾值?他們是兩種不同的演員類型 –