falls es mal jemand braucht - hab mir paar Funktionen geschrieben um Scripte einfacher zu lesen/schreiben.
toBit:
Nützlich wenn man zB INSERTs in die db schicken will like:
PHP
§sql = "INSERT INTO `db`.`tbl` SET `an_oder_aus` = " . toBit($val) . ";";
// tipp: "an aus" felder können vom typ BIT(1) sein
// INSERT INTO `db`.`tbl` SET `feld_one_bit` = b'0'; -- siehe: http://dev.mysql.com/doc/refman/5.0/en/bit-field-literals.html
Funktion:
PHP
function toBit($var, $trim_str=true){
if(function_exists('toBool')){
return (int)toBool($var, $trim_str);
}
(($is_str=is_string($var))and $trim_str)and $var=trim($var);
return (int)(
(
($is_str and ($var === 'false' or $var === 'null'))
or (is_numeric($var)and $var < 1)
) ? false : (bool)$var
);
}
Alles anzeigen
Test:
PHP
foreach(
array(
// erwartet, zu prüfen
array('1', true),
array('0', false),
array('0', null),
array('1', 'true'),
array('0', 'false'),
array('0', 'null'),
array('1', ' true '),
array('0', ' false '),
array('0', ' null '),
array('1', 13),
array('1', 1),
array('0', 0),
array('0', -1),
array('1', '13'),
array('1', '1'),
array('0', '0'),
array('0', '-1'),
array('1', 'a string ...'),
) as $arr
){
$expected = $arr[0];
$var = $arr[1];
echo $expected . ' ' . var_export(toBit($var), true) . PHP_EOL;
}
Alles anzeigen
out:
----------------------------------------
toBool:
Nützlich, wenn man den Inhalt einer var als boolean braucht -- klar irgendwie.
Funktion:
PHP
function toBool($var, $trim_str=true){
(($is_str=is_string($var))and $trim_str)and $var=trim($var);
return (
($is_str and ($var === 'false' or $var === 'null'))
or (is_numeric($var)and $var < 1)
) ? false : (bool)$var;
}
Test:
PHP
foreach(
array(
// erwartet, zu prüfen
array('true', true),
array('false', false),
array('false', null),
array('true', 'true'),
array('false', 'false'),
array('false', 'null'),
array('true', ' true '),
array('false', ' false '),
array('false', ' null '),
array('true', 13),
array('true', 1),
array('false', 0),
array('false', -1),
array('true', '13'),
array('true', '1'),
array('false', '0'),
array('false', '-1'),
array('true', 'a string ...'),
) as $arr
){
$expected = $arr[0];
$var = $arr[1];
echo $expected . ' ' . var_export(toBool($var), true) . PHP_EOL;
}
Alles anzeigen
out:
Code
true true
false false
false false
true true
false false
false false
true true
false false
false false
true true
true true
false false
false false
true true
true true
false false
false false
true true
Alles anzeigen
--------------------------
toStr:
Nützlich, wenn man debuggen muss/will (null wird ja dann zB nicht ausgegeben ect ect)
Funktion:
PHP
function toStr($var, $if_type_is=-1, $return_failure='', $cut_str_quotes=true){
$if_type_is !== -1 and $if_type_is=strtolower($if_type_is);
$var_ret = ($cut_str_quotes and ($is_str=is_string($var)))
? substr(var_export($var, true), 1, -1)
: (
($is_res=is_resource($var)) ? get_resource_type($var) : var_export($var, true)
);
if($if_type_is === -1){
return $var_ret;
}
elseif($if_type_is === 'resource'){
return $is_res ? $var_ret : $return_failure;
}
elseif($if_type_is === 'string'){
return $is_str ? $var_ret : $return_failure;
}
elseif(
in_array(
$if_type_is,
array(
'bool',
'null',
'array',
'object',
'float',
'double', // alias float
'real', // alias float
'int',
'integer', // alias int
'long', // alias int
'numeric',
),
true
)
){
return call_user_func_array('is_' . $if_type_is, array($var)) ? $var_ret : $return_failure;
}
return $return_failure;
}
Alles anzeigen
Test:
PHP
foreach(
array(
array(1, 2, 3, '4', (object)array('key' => 'val')),
true, false, null,
'true', 'false', 'null',
1, '1',
1.1, '1.1',
1, '1',
PHP_INT_MAX , (string)PHP_INT_MAX,
(object)array(1,2,3),
socket_create(AF_INET, SOCK_STREAM, SOL_TCP),
"a string with 'quotes' and slashed \'quotes\'"
) as $var
){
echo toStr($var) . PHP_EOL;
#echo toStr($var, 'bool', 'ERROR', 1) . PHP_EOL;
#echo toStr($var, 'resource', '', 0) . PHP_EOL;
#var_dump(toStr($var, 'bool', $var));
}
Alles anzeigen
out:
Code
array (
0 => 1,
1 => 2,
2 => 3,
3 => '4',
4 =>
stdClass::__set_state(array(
'key' => 'val',
)),
)
true
false
NULL
true
false
null
1
1
1.100000000000000088817841970012523233890533447265625
1.1
1
1
2147483647
2147483647
stdClass::__set_state(array(
0 => 1,
1 => 2,
2 => 3,
))
Socket
a string with \'quotes\' and slashed \\\'quotes\\\'
Alles anzeigen
Weitere Bsp:
PHP
$connection_status = true;
$log_msg = 'connection status is: ' . toStr($connection_status);
echo $log_msg; -- out: connection status is: true
$var = true;
echo toStr($var, 'bool', $var); // to string , wenn bool, sonst var -- out: true
$var = '1';
echo toStr($var, 'bool', $var); // to string , wenn bool, sonst var -- out: 1
$var = null;
echo toStr($var, 'resource'); // to string , wenn resource, sonst [default] '' -- out: ''
$var = '...';
echo toStr($var, 'object', 'is gar kein object'); // to string , wenn object, sonst eigene meldung -- out: 'is gar kein object'
Alles anzeigen