EuGen пишет:Это и в PHP 5 будет работать (предполагаю, что исходную задачу это все же решает, как того и требовалось)Это и в PHP 5 будет работать (предполагаю, что исходную задачу это все же решает, как того и требовалось).
EnGen, или я вас сейчас не пойму или вы меня не поняли. Я подразумевал, свой первый вопрос.
zypikov пишет:Есть функция в которую передается переменное число параметров. Через func_get_args() эти переменные можно получить. Возможно ли как-то теперь эти переменные вставить в языковую конструкцию list(переменныеПереданныеВФункцию)?
Я объясню какую задачу хочу решить, т.е. упростить себе жизнь
Есть база в текстовом файле, например, date||name||describe||foto1_foto2..||fieldN
хочу вытягивать переменные date и name на одной ветке if, на другой ветке describe
и делать это все с помощью одной функции, например, vte_Extract(). А уж потом делать с ними че захочешь.
Причем любой из этих параметров может быть составным, как, например, foto1_foto2.., который бъется тоже на переменные через "_".
Или вот я захотел, например, добавить(или удалить) параметр, да еще и в определенное место, между describe||foto1_foto2..||. Выходит нужно будет менять в позиции переменных в конструкции list(variables).
Поэтому решил в значение переменной указывать ее положение в строке разбития. Причем если переменная является массивом, то переменную еще нужно разбивать (в массиве передавать параметром разделитель). И в этом случае, чтобы переменную извлечь нужно просто в ее значение указать ее номер или, если это массив, передать еще разделитель.
написал функцию
PHP:
скопировать код в буфер обмена
$strVal = "";
$totalVariable = 8;
$discribe = 1;
$name = 0; // позиция в строке разбития
$images = array("position" => "3", "devider" => "_");
function vte_Extract(){
global $totalVariable;
for ($i = 0; $i < count($arg_list); $i++) { $mas = $arg_list[$i];
$index = $mas['position'];
$devider = $mas['devider'];
}else{
$index = $arg_list[$i];
}
if (isset($devider) && $devider != ""){ $str[$i]['devider'] = $devider;
$devider = "";
}
$str[$i]['position'] = $index;
}
$first = TRUE;
// $last = false;
$max = $arg_list[count($arg_list)]; for($q = 0; $q <= count($arg_list) - 1; $q++){ // if(!isset($arg_list[$q+1])){break;}
if($first){
$first = false;
if($str[0]["position"] !== 0){
$niz = 0;
$top = $str[$q]["position"];
}
}else{
$niz = $str[$q-1]["position"];
$top = $str[$q]["position"];
}
$raz = $top - $niz;
if ($raz !== 0){
for ($i = $niz+1; $i <= $top-1; $i++)
$strR .= ",";
} if($q == count($arg_list)-1
){ $strR .= "\$vaL".$str[$q]["position"];}else{ $strR .= "\$vaL".$str[$q]["position"].","; }
}
$ss = "myName||MyData||foto.jpg";
$per = "list($strR) = explode(\"||\",\"$ss\")";
$fp = fopen("testScript.php",'w'); include('testScript.php');
echo $vaL0;
}
Но сначала не продумал, что свой функцией я генерирую строку и тупо вставить в list() ее не получиться. Единственный выход писать строку в пхп файл и потом ее инклюдить.
Т.е. идея в том, чтобы получить хоть чуток масштабируемый тестовую базу. Чтобы можно было любой пар-р удалить, добавить, сделать составным и не перелопачивать все скрипты.
Если например, в конструкции list(var1,,var3) пропускать 3 переменную, то измениться ли производительность, если list(var1,var2,var3) 2 переменную извлекать?
Стоит ли вообще делать сайты на текстовой базе? Или все поглотил mysql и текстовая база скатывается на обочину историию..?