关于foreach,为什么它不接受AND逻辑运算符? 我已经使用了“&&”我得到了同样的错误。 我需要创建另一个foreach吗?
<?php
$txt_name=$_REQUEST['text_name'];
$txt_value=$_REQUEST['text_value'];
if (!empty($txt_name) AND ($txt_value)) {
foreach ($txt_name AS $x)&&($txt_value AS $y) {
$con = mysql_connect("localhost", "root", "");
mysql_select_db("test1");
$name = mysql_real_escape_string($x);
$score = mysql_real_escape_string($y);
$sql = mysql_query("INSERT INTO tbl_test (testname, score) VALUES ('$name', '$score')");
mysql_close($con);
}
}
?>
答案 0 :(得分:4)
为什么不接受AND逻辑运算符?
foreach
不执行逻辑运算。这不是它的工作原理。
我是否需要创建另一个foreach?
是
foreach
是编写更复杂的for
循环的简化方法:
foreach ( $arr as $key=>$value )
{
...code...
}
就像写作
$keys = array_keys( $arr );
$l = count( $arr );
for ( $i = 0; $i < $l; $i++ )
{
$key = $keys[$i];
$value = $arr[$key];
...code...
}
逻辑操作不会考虑这种格式。
答案 1 :(得分:3)
如果它们都是数组, foreach 只有其中一个,并使用该键访问另一个数组的值。
foreach ($txt_name AS $key => $name) {
$value = isset($txt_value[$key]) ? $txt_value[$key] : NULL;
}
答案 2 :(得分:2)
猜猜,但试试:
if (!empty($txt_name) && !empty($txt_value)) {
foreach ($txt_name AS $k => $x) {
$y =$txt_value[$k];
答案 3 :(得分:1)
如果两个操作数都为真,则逻辑运算符返回true,否则返回false。
您似乎不想要两个数组的逻辑和连接。您可以重复循环(减少内存使用)或使用array_merge生成具有两个数组值的数组。
名称txt_name和txt_value让我觉得你想要同时使用这两个值,循环一并检索到它们中的每一个(虽然我无法看到你使用这些值)。
答案 4 :(得分:1)
是的,你必须使用第二个循环才能做到这一点。
答案 5 :(得分:1)
array_combine()
可能效果最好。这将如下工作:
$txt_name=$_REQUEST['text_name'];
$txt_value=$_REQUEST['text_value'];
if (!empty($txt_name) AND ($txt_value)) {
$values = array_combine($txt_name, $txt_value);
foreach ($values as $name => $score) {
$con = mysql_connect("localhost", "root", "");
mysql_select_db("test1");
$name = mysql_real_escape_string($name);
$score = mysql_real_escape_string($score);
$sql = mysql_query("INSERT INTO tbl_test (testname, score) VALUES ('$name', '$score')");
mysql_close($con);
}
}
这将两个变量组合成一个数组,第一个用作键,另一个数组用作值。然后你可以使用foreach很好而整齐地循环它。
如果稍后你需要在SQL查询中添加另一个值,那么这种技术将不起作用。
答案 6 :(得分:0)
试试这个:
<?php
if (!empty($txt_name) AND ($txt_value))
{
$i = 0;
while(sizeof($_REQUEST['text_name']) != $i)
{
$x[$_REQUEST['text_name'][$i]] = $_REQUEST['text_value'][$i];
$i++
}
foreach ($x AS $y) {
$con = mysql_connect("localhost", "root", "");
mysql_select_db("test1");
$name = mysql_real_escape_string($x);
$score = mysql_real_escape_string($y);
$sql = mysql_query("INSERT INTO tbl_test (testname, score) VALUES ('$name', '$score')");
mysql_close($con);
}
}
?>
我使每个键都是$ _REQUEST ['text_name'],其值为$ _REQUEST ['text_value'],我希望这有帮助。
注意:我搜索了关于在foreach中获取两个数组并没有发现任何与之相关的事情,因此可能是php不支持这种格式。