Php 是什么使这两个数组相加不同?
我用它来获取用户输入并清理代码。我试图解决这个问题,然后代码停止工作 这项工作:Php 是什么使这两个数组相加不同?,php,arrays,Php,Arrays,我用它来获取用户输入并清理代码。我试图解决这个问题,然后代码停止工作 这项工作: $BindVar[] = array(); $BindVar[] = $Email; $BindVar[] = $pass; 然而,这并不是: $BindVar[] = array($Email,$pass); 以下是我更改该行时中断的代码: foreach ($BindVars as $value) { $input[] = "'" . $mysqli->
$BindVar[] = array();
$BindVar[] = $Email;
$BindVar[] = $pass;
然而,这并不是:
$BindVar[] = array($Email,$pass);
以下是我更改该行时中断的代码:
foreach ($BindVars as $value) {
$input[] = "'" . $mysqli->real_escape_string($value) . "'"; // cleaning the input
}
它给出了以下错误:
警告:mysqli::real_escape_string()要求参数1为字符串,数组以
要理解错误消息,我认为需要对数组进行一些解释。 如果使用括号,如
$bindVars[]
,则无需通过调用array()
函数来说明它是一个数组
PHP将括号[]
理解为数组声明
用括号
[]
和数组()函数声明
$BindVars[] = array($Email,$pass);
// same as:
$BindVars = array(
array($Email, $pass);
);
在$bindVars
内创建一个新数组,该数组包含$Email
和$pass
因此,$bindVars
已经是一个数组,因为括号[]
。这给了我们一个多维数组
在代码中,它是一个二维数组,表示一个表。它是最常用的多维数组
像$bindVars[][]
这样的三维数组(3对括号)表示立方体或骰子
一个四维数组$bindVars[][]
(4对括号)就是一个立方体,每边都有另一个维度。--随着每一个进一步的维度,它变得更加令人难以置信---
回到二维数组:
1。维度是行或记录
2。维度是列或字段
// 1. Dimension: 1. row
echo $bindVars[0]; // Output: Array() Here is your mysqli error coming from!
警告:mysqli::real_escape_string()预期参数1为
字符串,数组给定
改变
$BindVar[] = array($Email,$pass);
到
[]
用于将新项追加到数组中$BindVar[]=array(…)
正在将另一个数组放入第一个数组的该项中。这就是为什么在该项上运行real\u escape\u string
失败的原因,因为该项不是字符串而是嵌套数组
$BindVar[] = $Email;
$BindVar[] = $pass;
这是一个包含2个字符串元素的数组
$BindVar[] = array($Email,$pass);
这是一个包含1数组元素且包含2字符串元素的数组
两者是不同的,应该以不同的方式处理。第一个是简单数组,第二个是多维数组
哦,我忘了你的
$BindVar[] = array();
这将导致意外行为,实际上会向$BindVar
数组添加一个空白数组元素。从外观上看,我认为您只是希望将$BindVar声明为一个数组,请执行以下操作
$BindVar = array();
代码如何构造数组的伪符号:
第一:
$BindVar[] = array();
$BindVar[] = $Email;
$BindVar[] = $pass;
$BindVar
(
Array(),
Email,
Pass
)
第二:
$BindVar[] = array($Email,$pass);
$BindVar
(
Array(Email, Pass)
)
这两者显然不同
$BindVar[] = array();
^^^^^^^^^^---- push a new array into $BindVar
如果在此之前未定义$bindvar
,则将创建一个新数组,然后将一个空数组推入其中。这使得$BindVar[0]
成为一个数组,当您为绑定操作循环它时,您将把新的空数组传递给bind调用。这就是你的错误
你可能只想:
$BindVar = array();
^--- no []
你可以改变你喜欢的吼叫
$BindVar[]=array($Email,$pass)
到$BindVar=array($Email,$pass)代码>要查看您所做的操作的结果,请在每种情况下使用print\r($BindVar)
进行调试。。。赋值和追加之间的区别将变得很明显。这实际上并不能回答这两者之间的区别arrays@Hanky웃他确实给我展示了如何让它工作。其他几个解释了数组和指针值与对象内容的关系。这就是为什么我给了他答案。太好了,很高兴听到这个
$BindVar[] = array();
^^^^^^^^^^---- push a new array into $BindVar
$BindVar = array();
^--- no []