if functie
function if() kan niet
ofnaja het kan wel maar je overschijft een belangerijke functie
ofnaja het kan wel maar je overschijft een belangerijke functie
Ik denk dat hij bedoeld hoe die functie gemaakt is, wat de betekenis is van de huidige functie if?
Oh, volgens mij c, perl of python
Nee, ik bedoel de code, wat if, if maakt als het ware.
Tom schreef:Nee, ik bedoel de code, wat if, if maakt als het ware.
Dylanh schreef:Oh, volgens mij c, perl of python
Maar hoe werkt dat dan samen in PHP?
if kan verschillende dingen doen voor zover ik weet. Als je
doet wordt er gekeken of de parameters dezelfde waarde hebben. Doe je echter
dan wordt er gekeken of de parameters dezelfde waarde hebben en van hetzelfde datatype zijn.
Als je
doet dan wordt er gekeken of de waarde bestaat (geen goede manier om dit te doen, als je het mij vraagt)
Wanneer je
doet dan wordt er gekeken of de waarde true is.
Al deze if-statements kun je dan ook weer doen met een ! er in om te kijken of de voorwaarde niet waar is.
Hoe dit allemaal precies werkt weet ik niet en ik durf ook niet te zeggen in welke taal het precies geschreven is
if($valueA == $valueB) doet wordt er gekeken of de parameters dezelfde waarde hebben. Doe je echter
if($valueA === $valueB) dan wordt er gekeken of de parameters dezelfde waarde hebben en van hetzelfde datatype zijn.
Als je
if($isThisDefined) doet dan wordt er gekeken of de waarde bestaat (geen goede manier om dit te doen, als je het mij vraagt)
Wanneer je
if($booleanValue) doet dan wordt er gekeken of de waarde true is.
Al deze if-statements kun je dan ook weer doen met een ! er in om te kijken of de voorwaarde niet waar is.
Hoe dit allemaal precies werkt weet ik niet en ik durf ook niet te zeggen in welke taal het precies geschreven is
Ik weet wat het kan doen, maar ik wil weten hoe de functie in c, perl of python is opgebouwt.
Tom schreef:Ja hier ben ik ook erg benieud naar, maar dan wel met meerde functies.Maar hoe werkt dat dan samen in PHP?
Luukvdo schreef:doet wordt er gekeken of de parameters dezelfde waarde hebben. Doe je echterif kan verschillende dingen doen voor zover ik weet. Als jeif($valueA == $valueB)
if($valueA === $valueB) dan wordt er gekeken of de parameters dezelfde waarde hebben en van hetzelfde datatype zijn.
Als je
if($isThisDefined) doet dan wordt er gekeken of de waarde bestaat (geen goede manier om dit te doen, als je het mij vraagt)
Wanneer je
if($booleanValue) doet dan wordt er gekeken of de waarde true is.
Al deze if-statements kun je dan ook weer doen met een ! er in om te kijken of de voorwaarde niet waar is.
Hoe dit allemaal precies werkt weet ik niet en ik durf ook niet te zeggen in welke taal het precies geschreven is
Doet die 3e niet hetzelfde als if isset?
Stefvdwel schreef:Doet die 3e niet hetzelfde als if isset?Eerdere citaten tonen
Luukvdo schreef:if kan verschillende dingen doen voor zover ik weet. Als jeif($valueA == $valueB)
doet wordt er gekeken of de parameters dezelfde waarde hebben. Doe je echterif($valueA === $valueB)
dan wordt er gekeken of de parameters dezelfde waarde hebben en van hetzelfde datatype zijn.
Als jeif($isThisDefined)
doet dan wordt er gekeken of de waarde bestaat (geen goede manier om dit te doen, als je het mij vraagt)
Wanneer jeif($booleanValue)
doet dan wordt er gekeken of de waarde true is.
Al deze if-statements kun je dan ook weer doen met een ! er in om te kijken of de voorwaarde niet waar is.
Hoe dit allemaal precies werkt weet ik niet en ik durf ook niet te zeggen in welke taal het precies geschreven is
nee, hij kijkt bij die if dan of de waarde true is.
Als $isThisDefined false is dan geeft if($isThisDefined) ook false, maar if(isset($isThisDefined)) zou dan true geven omdat ie immers wel bestaat.
toevoeging op 28 juni 2014, 21
04:Tom schreef:dan zorg je dat die functie wordt doorgegeven aan je functie parse_als() ofzo (wat je met reguliere expressies ofzo kan doen), en die functie parse_als() bouw je dan zo op:Ik weet wat het kan doen, maar ik wil weten hoe de functie in c, perl of python is opgebouwt.
Een heleboel functies zijn gewoon wrappers naar dezelfde functie in C, maar dan met wat extra checks enzo.
Stel dat je met PHP een taal zou maken die deze code zou accepteren:als {%a == %b} [ echo ja; ] else [ echo nee; ]
[COLOR= #0000BB]<?php[/COLOR]
[COLOR= #007700]function[/COLOR] parse_als[COLOR= #007700]([/COLOR][COLOR= #0000BB]$voorwaarde[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$if[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #0000BB]$else[/COLOR][COLOR= #007700])
{[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/exec"]exec[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$voorwaarde[/COLOR][COLOR= #007700]))
{[/COLOR]
[URL="http://www.php.net/exec"]exec[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$if[/COLOR][COLOR= #007700]);
}[/COLOR]
[URL="http://www.php.net/else"]else[/URL]
[COLOR= #007700]{[/COLOR]
[URL="http://www.php.net/exec"]exec[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$else[/COLOR][COLOR= #007700]);
}
}[/COLOR] en die functie wordt dan door je parser zo aangeroepen:
[COLOR= #0000BB]<?php[/COLOR]
parse_als[COLOR= #007700]([/COLOR][COLOR= #DD0000]$a == $b[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"echo ja;"[/COLOR][COLOR= #007700],[/COLOR] [COLOR= #DD0000]"echo nee;"[/COLOR][COLOR= #007700]);[/COLOR] en dat kun je dan zo uitgebreid maken als je zelf wil, maar de logica achter die functies hoef je dan niet allemaal nog eens te maken.
iets als substr() gebruikt gewoon de substr() van C of waar PHP dan ook in geschreven is.
toevoeging op 28 juni 2014, 21:36:42:
http://lxr.php.net/search
Daar kun je de source van PHP functies vinden.

Zoek maar eens op
PHP_FUNCTION explode
dan krijg je deze broncode:
/* {{{ proto array explode(string separator, string str [, int limit])
Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned. */
PHP_FUNCTION(explode)
{
char *str, *delim;
int str_len = 0, delim_len = 0;
long limit = LONG_MAX; /* No limit */
zval zdelim, zstr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|l", &delim, &delim_len, &str, &str_len, &limit) == FAILURE) {
return;
}
if (delim_len == 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter");
RETURN_FALSE;
}
array_init(return_value);
if (str_len == 0) {
if (limit >= 0) {
add_next_index_stringl(return_value, "", sizeof("") - 1, 1);
}
return;
}
ZVAL_STRINGL(&zstr, str, str_len, 0);
ZVAL_STRINGL(&zdelim, delim, delim_len, 0);
if (limit > 1) {
php_explode(&zdelim, &zstr, return_value, limit);
} else if (limit < 0) {
php_explode_negative_limit(&zdelim, &zstr, return_value, limit);
} else {
add_index_stringl(return_value, 0, str, str_len, 1);
}
}
/* }}} */ Als je dan wat doorklikt en doorzoekt kun je denk wel de echte logica achter de functie vinden.
toevoeging op 28 juni 2014, 21:38:14:
oh hierzo, de source van php_explode:
/* {{{ php_explode
*/
PHPAPI void php_explode(zval *delim, zval *str, zval *return_value, long limit)
{
char *p1, *p2, *endp;
endp = Z_STRVAL_P(str) + Z_STRLEN_P(str);
p1 = Z_STRVAL_P(str);
p2 = php_memnstr(Z_STRVAL_P(str), Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp);
if (p2 == NULL) {
add_next_index_stringl(return_value, p1, Z_STRLEN_P(str), 1);
} else {
do {
add_next_index_stringl(return_value, p1, p2 - p1, 1);
p1 = p2 + Z_STRLEN_P(delim);
} while ((p2 = php_memnstr(p1, Z_STRVAL_P(delim), Z_STRLEN_P(delim), endp)) != NULL &&
--limit > 1);
if (p1 <= endp)
add_next_index_stringl(return_value, p1, endp-p1, 1);
}
}
/* }}} */ toevoeging op 28 juni 2014, 21:38:46:
ik weet alleen niet waar de code van de if te vinden is

Wat zit er dan achter if() in C
C wordt weer gecompiled naar machinetaal (of via nog een andere taal naar machinetaal?): http://nl.wikipedia.org/wiki/Machinetaal
http://books.google.nl/books?id=mM58oD4LATUC&pg=PA448&lpg=PA448&dq=machine+code+if+statement&source=bl&ots=rpW41qACcn&sig=ZdsaQUcANqpbF5ixOCpHsGt_BtE&hl=nl&sa=X&ei=TzKvU9qPHYHfOqHPgEg&ved=0CDYQ6AEwAg#v=onepage&q=machine%20code%20if%20statement&f=false
Google ook eens wat op die zoekquery.
Verder weet ik er ook niet veel van helaas, maar het is wel interessant.
Lees ook deze pagina: https://answers.yahoo.com/question/index?qid=20100103001613AA6NzF8
http://books.google.nl/books?id=mM58oD4LATUC&pg=PA448&lpg=PA448&dq=machine+code+if+statement&source=bl&ots=rpW41qACcn&sig=ZdsaQUcANqpbF5ixOCpHsGt_BtE&hl=nl&sa=X&ei=TzKvU9qPHYHfOqHPgEg&ved=0CDYQ6AEwAg#v=onepage&q=machine%20code%20if%20statement&f=false
Google ook eens wat op die zoekquery.
Verder weet ik er ook niet veel van helaas, maar het is wel interessant.
Lees ook deze pagina: https://answers.yahoo.com/question/index?qid=20100103001613AA6NzF8