Failure
17.04.2010, 00:53
Есть функция edit в которой передаются куча аргументов, например
function edit($id, $first_name, $second_name, $email,...)
тоесть реально много :)
далее, после небольших манипуляций с ними идёт UPDATE `table` SET ..... WHERE id='$id'
загвоздка в том что функция должна менять любое указанное в аргументе значение. То есть если я вызываю edit(1, '', 'Вася', '', '', ....) то должно сменится только first_name в таблице `table` аналогично с 2 и больше аргументами.
На мысль пришла идея что надо бы загнать всё это в массив с $key`ем таким же как аргумент, и $value с его value :)
function edit($id, $first_name, $second_name, $email,...) {
$arr = Array([id]=>$id, [first_name]=> $first_name, .....);
foreach($arr as $key=>$value)
if(strlen($value)>0) $query .= $key."=".$value.",";
но в конце запроса будет лишняя запятая (substring еще не хватало), нет такой функции которая бы сделала этот самый $arr, да и говнокод это полнейший.
Интересует самый оптимальный вариант реализации функции
function edit($id, $first_name, $second_name, $email,...)
тоесть реально много :)
далее, после небольших манипуляций с ними идёт UPDATE `table` SET ..... WHERE id='$id'
загвоздка в том что функция должна менять любое указанное в аргументе значение. То есть если я вызываю edit(1, '', 'Вася', '', '', ....) то должно сменится только first_name в таблице `table` аналогично с 2 и больше аргументами.
На мысль пришла идея что надо бы загнать всё это в массив с $key`ем таким же как аргумент, и $value с его value :)
function edit($id, $first_name, $second_name, $email,...) {
$arr = Array([id]=>$id, [first_name]=> $first_name, .....);
foreach($arr as $key=>$value)
if(strlen($value)>0) $query .= $key."=".$value.",";
но в конце запроса будет лишняя запятая (substring еще не хватало), нет такой функции которая бы сделала этот самый $arr, да и говнокод это полнейший.
Интересует самый оптимальный вариант реализации функции