select * from table where ctime >= "[date-14]" and ctime <= "[date-1]";想把上面这句sql的中括号表示的日期依次换成下面的数组中的元素array("2015-07-01","2015-07-15");

因为markdown写正则比较麻烦,这里就直接上图片了
ps:设想一下,如sql中只有一个需要替换的时间条件,就需要修改成
$sql = sprintf($sql,$arr[0])说白了呢就是如果sprintf函数支持第二个参数是数组就太好了。查了一番之后确实可以有解决办法:
mixed call_user_func_array ( callable $callback , array $param_arr )把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。
$param = $arr;array_unshift($param,$sql);$sql = call_user_func_array("sprintf",$param);接下来介绍str_replace — 子字符串替换,数组替换
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。
<?php// 赋值: <body text="black">$bodytag = str_replace("%body%", "black", "<body text="%body%">");// 赋值: Hll Wrld f PHP$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");// 赋值: You should eat pizza, beer, and ice cream every day$phrase = "You should eat fruits, vegetables, and fiber every day.";$healthy = array("fruits", "vegetables", "fiber");$yummy = array("pizza", "beer", "ice cream");$newphrase = str_replace($healthy, $yummy, $phrase);// 赋值: 2$str = str_replace("ll", "", "good golly miss molly!", $count);echo $count;?>Example #2 可能的 str_replace() 替换范例
<?php// 替换顺序$str = "Line 1 Line 2 Line 3 Line 4 ";$order = array(" ", " ", " ");$replace = "<br />";// 首先替换 字符,因此它们不会被两次转换$newstr = str_replace($order, $replace, $str);// 输出 F ,因为 A 被 B 替换,B 又被 C 替换,以此类推...// 由于从左到右依次替换,最终 E 被 F 替换$search = array("A", "B", "C", "D", "E");$replace = array("B", "C", "D", "E", "F");$subject = "A";echo str_replace($search, $replace, $subject);// 输出: apearpearle pear// 由于上面提到的原因$letters = array("a", "p");$fruit = array("apple", "pear");$text = "a p";$output = str_replace($letters, $fruit, $text);echo $output;?>注释