Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php数组替换_Php_Arrays - Fatal编程技术网

php数组替换

php数组替换,php,arrays,Php,Arrays,我有两个php函数的输出,如下所示 第一个输出给了我类似的东西 INSERT INTO "table1" ('column1', 'column2', 'column3') VALUES (?,?,?) INSERT INTO "table2" ('column1', 'column2', 'column3','column4','column5') VALUES (?,?,?,?,?) 其他输出给出 Array = ( 1 => 'value1', 2 => 'value2',

我有两个php函数的输出,如下所示

第一个输出给了我类似的东西

INSERT INTO "table1" ('column1', 'column2', 'column3') VALUES (?,?,?)
INSERT INTO "table2" ('column1', 'column2', 'column3','column4','column5') VALUES (?,?,?,?,?)
其他输出给出

Array = (
1 => 'value1',
2 => 'value2',
3 => 'value3',
)

Array = (
1 => 'value1',
2 => 'value2',
3 => 'value3',
4 => 'value4',
5 => 'value5',
)
现在我想做以下几点。。 如何用值value1、value2和value3替换第一个INSERT查询中的“?”,第二个查询如何用相同的方法替换第二个数组中的值


关于

这个精确的解决方案可以这样做:

$foo = implode("','",$array);
INSERT INTO "table1" ('column1', 'column2', 'column3') VALUES ('$foo')
$query1 = "INSERT INTO `table1` (`column1`, `column2`, `column3`) VALUES (?,?,?)";
$query2 = "INSERT INTO `table2` (`column1`, `column2`, `column3`,`column4`,`column5`) VALUES (?,?,?,?,?)";

$values1 = array("value1","value2","value3");
$values2 = array("value1","value2","value3","value4","value5");


function insertIntoQuery($query, $values){
    $countval = count($values);
    $replace = array();
    for($i=0; $i<$countval; $i++){
        $replace[] = '?';
    }
    $implode = implode(",", $replace);
    $values = implode("','", $values);
    $query = str_replace($implode, "'".$values."'", $query);
    return $query;
}

echo insertIntoQuery($query1, $values1);
echo "<br />";
echo insertIntoQuery($query2, $values2);
$query1=“插入'table1'('column1','column2','column3')值(?,,?)”;
$query2=“插入到`表2'(`column1`、`column2`、`column3`、`column4`、`column5`)值(?、、、、?、?)”;
$values1=数组(“value1”、“value2”、“value3”);
$values2=数组(“value1”、“value2”、“value3”、“value4”、“value5”);
函数insertIntoQuery($query,$value){
$countval=计数($value);
$replace=array();

对于($i=0;$i),可以这样精确求解:

$query1 = "INSERT INTO `table1` (`column1`, `column2`, `column3`) VALUES (?,?,?)";
$query2 = "INSERT INTO `table2` (`column1`, `column2`, `column3`,`column4`,`column5`) VALUES (?,?,?,?,?)";

$values1 = array("value1","value2","value3");
$values2 = array("value1","value2","value3","value4","value5");


function insertIntoQuery($query, $values){
    $countval = count($values);
    $replace = array();
    for($i=0; $i<$countval; $i++){
        $replace[] = '?';
    }
    $implode = implode(",", $replace);
    $values = implode("','", $values);
    $query = str_replace($implode, "'".$values."'", $query);
    return $query;
}

echo insertIntoQuery($query1, $values1);
echo "<br />";
echo insertIntoQuery($query2, $values2);
$query1=“插入'table1'('column1','column2','column3')值(?,,?)”;
$query2=“插入到`表2'(`column1`、`column2`、`column3`、`column4`、`column5`)值(?、、、、?、?)”;
$values1=数组(“value1”、“value2”、“value3”);
$values2=数组(“value1”、“value2”、“value3”、“value4”、“value5”);
函数insertIntoQuery($query,$value){
$countval=计数($value);
$replace=array();
对于($i=0;$i通用解决方案:

function replaceWithArray($query, $array) {
    $n = 0;
    return preg_replace('~\?~e', '$array[$n++]', $query);
}

注意:如果只想在括号之间替换
,请使用如下查找:
preg\u replace('~\?(?=[^\(\)]*\)~e','$array[$n++]',$query);
通用解决方案:

function replaceWithArray($query, $array) {
    $n = 0;
    return preg_replace('~\?~e', '$array[$n++]', $query);
}


注意:如果只想替换括号之间的
,请使用如下查找:
preg\u replace(“~\?(?=[^\(\)]*\)~e'、“$array[$n++]”、$query);

如果您使用select语句中的?,?,?是元语法,MySQL将在运行时用实际值替换这些变量。如果您的格式是变量,这可能会很危险,但是如果您使用的是静态数据,MySQL的第一个猜测总是正确的,如果它一开始就正确对齐

根据Php 5.x手册,这个数组_replace有一个函数调用,奇怪的是,它看起来很像您的示例。我运行的是Php 5.2,服务器总是对该函数调用犹豫不决,如下所示:

致命错误:调用未定义的函数数组_replace()

但是CLI和mod_php都是5.2xx之后的版本

[root@networktagdom]#php-i | grep-i版本 PHP版本=>5.2.10

现在,虽然at的示例说要以这种方式替换数组,但在创建编程语言解释器的人赶上编写手册的人之前,它似乎无法在运行CentOS 5.2并将PhP rpmforge升级到5.2的普通数据中心安装的Linux box上工作。这确实是一个没有意义的点,因为PhP 5.x+支持数组de refere这样说:

$array_1 = array('Tom','Dick','Harry');
$array_1[1] = "Car 54";
print_r($array_1);
产出: 排列 ( [0]=>汤姆 [1] =>汽车54 [2] =>哈利 )

如果在取消引用或替换数组值时需要更精细的控制,则不要依赖主数组中的默认索引。创建一个增量计数器,然后使用它强制转换数组索引,例如$array[$i]=array(“Foo”=>“Bar”,“Bar”=>“Foo”);其中$i是$i++

…或者…如果您使用的是较新版本的Php,您甚至可以使用

print_r($array[$i])(0);

:)

如果您使用select语句中的?,?,?是元语法的,MySQL将在运行时用实际值替换这些变量。如果您的格式是变量,这可能会很危险,但是如果您使用的是静态数据,MySQL的第一个猜测总是正确的,如果它一开始就正确对齐

根据Php 5.x手册,这个数组_replace有一个函数调用,奇怪的是,它看起来很像您的示例。我运行的是Php 5.2,服务器总是对该函数调用犹豫不决,如下所示:

致命错误:调用未定义的函数数组_replace()

但是CLI和mod_php都是5.2xx之后的版本

[root@networktagdom]#php-i | grep-i版本 PHP版本=>5.2.10

现在,虽然at的示例说要以这种方式替换数组,但在创建编程语言解释器的人赶上编写手册的人之前,它似乎无法在运行CentOS 5.2并将PhP rpmforge升级到5.2的普通数据中心安装的Linux box上工作。这确实是一个没有意义的点,因为PhP 5.x+支持数组de refere这样说:

$array_1 = array('Tom','Dick','Harry');
$array_1[1] = "Car 54";
print_r($array_1);
产出: 排列 ( [0]=>汤姆 [1] =>汽车54 [2] =>哈利 )

如果在取消引用或替换数组值时需要更精细的控制,则不要依赖主数组中的默认索引。创建一个增量计数器,然后使用它强制转换数组索引,例如$array[$i]=array(“Foo”=>“Bar”,“Bar”=>“Foo”);其中$i是$i++

…或者…如果您使用的是较新版本的Php,您甚至可以使用

print_r($array[$i])(0);

:)

这似乎是由这样的东西自动完成的。如果这是一个选项,你应该使用PDO。这似乎是由这样的东西自动完成的。如果这是一个选项,你应该使用PDO。谢谢,这一个应该可以工作…但不确定我做错了什么,每个人都会逐字逐句地接受这封信。v、 a,l,u,e…1,v,a,l…看我的例子。你的数组必须是这样:
array('value1','value2',…)
。就像你的问题一样。当你打印数组时,你有什么?我的数组如下..但我使用foreach单独获取值并将其作为变量..然后我有另一个sql语句,其中包含?在变量中..现在当我尝试你给出的内容时,每个问题的值都是字母,而不是整个值。我有一个f函数,它给出这两个输出(数组和sql..),我想用值替换每个?例如,我得到4个数组作为输出,我有4个匹配