Jag har problem med att få mitt program att läsa en sträng innehållandes 0 (noll) som en sträng och inte som en siffra. Hej! Hej, Hej! Nu har jag fått det att funka, men jag ser inte logiken i det, ganska ful lösning men det får duga så läge. Det är inte så konstigt att NULL returnerar FALSE.integer till string
Jag skickar in ett värde till min funktion enligt följande:
$obj->Table( "0", "30" );
i functionen kontrollerar jag argumentet:
if ($arg1==NULL)
Av nån anledning tolkar server "0" och NULL som samma sak och det vill inte jag. Har försökt med covert_to_string($arg1) och även med casting: if((string)$arg1==NULL), men inget vill fungera.
Är det någon som har nått bra tips.
Mvh
/BosseSv: integer till string
Försökte återskapa ditt problem utan att lyckas.
En liten fråga dock; sätter du argumenten till Table dynamiskt?
Lev väl,
Tom S.Sv: integer till string
Nej, dymansik sätter jag det inte, men självklart skulle jag vilja kunna det, det är inte omöjligt att behovet uppstår. Jag har inte koden på den maskin jag sitter vid nu men jag kan försöka återskapa en del av den för att visa exakt var det går fel:
function myFunction(){
print $HTMLTable("0", NULL );
}
...
function HTMLTable( $strBorder, $strExtra ){
$strRet = "<table";
// om $strBorder == "0" blir villkoret konstigt nog FALSE
if (!$strBorder==NULL)
$strRet .= " border=\"" . $strBorder . "\"";
// villkor för strExtra
$strRet .= ">";
return $strRet;
}
// ==========
jag har även testat att skriva (enligt php-online manualen):
if (!convert_to_string($strBorder)==NULL) //ger kompileringfel
och...
if (!(string)$strBorder==NULL) // returnerar FALSE
Mvh
/Bosse (komfunderad)Sv: integer till string
Antar att du provat
if (!$strBorder=="")
$strRet .= " border=\"" . $strBorder . "\"";
?
Lev väl,
Tom S.Sv: integer till string
Följande kod ger mig svaret att "0" = NULL, det är det jag inte vill alltså:
function HTMLTable( $argList ){
$num_args = func_num_args();
for($i=0; $i<$num_args; ++$i) {
if (!func_get_arg ($i)==NULL) {
switch($i){
case 0:
...
Men följande kod ger mig svaret att "0" != NULL:
function HTMLTable( $argList ){
$num_args = func_num_args();
for($i=0; $i<$num_args; ++$i) {
if (func_get_arg ($i)==NULL)
NULL;
else {
switch($i){
case 0:
...
Någon som har en snyggare lösning är denna på if-satsen så tar jag gladeligen emot den
Mvh
/BosseSv: integer till string
Kom ihåg tumregeln: allt som inte är 0 är sant.
0 evalueras till false som också evalueras som ""
Hur som helst så står inte NULL för 0 utan för ""
Alltså är NULL ingenting.
Satsen
echo "|" . NULL . "|";
returnerar || alltså är null ingenting
detta borde hjälpa lite
Annars kan du ju alltid sätta en defaultparameter i din funktion
function HTMLTable( $strBorder=0, $strExtra="")
nu kan du anropa din funktion genom HTMLTable() och $strBorder blir
alltid 0 om du inte har sätt den i funktionsanropet. Detta snabbar upp
koden och är mer smidigt
:: Markus Olsson ::