Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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_Mysql_Arrays - Fatal编程技术网

如何用另一个变量对PHP中的数组求和

如何用另一个变量对PHP中的数组求和,php,mysql,arrays,Php,Mysql,Arrays,首先,我是一个初学者程序员,尝试一个关于顺序算法搜索的简单php代码。 我对输出有一个问题,其中所寻求的数据的位置是索引4,但输出是索引3 <?php if(isset($_POST['Search'])) { $host = "localhost"; $username = "root"; $password = ""; $db = "db"; $db_link = mysqli_connect($host,$username,$password,$db); if (!$db_link)

首先,我是一个初学者程序员,尝试一个关于顺序算法搜索的简单php代码。 我对输出有一个问题,其中所寻求的数据的位置是索引4,但输出是索引3

<?php
if(isset($_POST['Search']))
{
$host = "localhost";
$username = "root";
$password = "";
$db = "db";
$db_link = mysqli_connect($host,$username,$password,$db);
if (!$db_link){
echo "koneksi gagal";
}
$a = 1;
$result = mysqli_query($db_link, "SELECT * FROM mahasiswa");
$array = array();
while ($row=mysqli_fetch_assoc($result))
{
   $array[] = $row;
}
  $xs = $_POST['namax'];
  $data = explode(" ", $xs);
  $jumlah_kata = (integer)count($data);
  for ($j=0; $j <count($data); $j++) { 
  for ($i = 0; $i <count($array); $i++) {
    if ($array[$i]['nama'] == $data[$j]) {
      echo $h = $array[$i] + $a ['nama']."(Postion :".$i.") ";
     }
  }
 }
}
?>


请提供帮助,谢谢

检查了您的代码,其中包含一条if语句,如果为真,则返回您所需的输出。在你的例子中,它呼应出它在最后的位置

因此,如果名称匹配,则它将返回其位置,但请记住一件事,for循环0开始,因此请注意如何计算索引,即:;在数据库中,索引将以1开始,而不是以0开始。因此,根据您的代码,它将通过迭代四次返回3,您可以将其计为4

还有一件事我想改进你的代码,即;您正在创建的额外循环,用于通过分解来检查名称。 您可以使用in_array function来解决此问题,并降低程序的时间复杂度。 让我给你们举个例子,说明我写的是什么

$xs = $_POST['namax'];
$data = explode(" ", $xs);
$jumlah_kata = (integer)count($data);
for ($i = 0; $i <count($array); $i++) {
    if (in_array($array[$i]['nama'],$data)) {
        echo $h = $array[$i] + $a ['nama']."(Postion :".$i.") ";
     }
}
$xs=$\u POST['namax'];
$data=explode(“,$xs”);
$jumlah_kata=(整数)计数($data);

对于($i=0;$i)请不要使用大写字母,并请为代码添加标签,以便您和其他人可以轻松阅读。
count()
始终返回整数,因此
(整数)
不是必需的。我们希望看到一些示例输入和示例输入的预期输出。我真的不喜欢
echo
的外观…赋值…非算术加法…非算术串联。为什么不应用分解的
$\u POST['namax']
到您的查询?这是进行比较的最佳/最早点。看起来您只想显示匹配项——用sql执行。我无法想象
位置
有任何值。您没有对查询的结果集进行排序,因此,
$I
作为它来自哪一行的指示器是不可靠的。Yes、 这段代码按它应该的方式工作。我可以与您共享工作沙盒链接,以便您自己检查。[此处代码]()@mickmacuksa,请与我分享您对该代码不起作用的原因的评论,以便我也能理解问题,并尝试解决和学习。我已将循环指针更改为1,但输出结果仍然相同,证明您的答案不起作用:此过滤应使用sql和已准备好的语句完成,而不是在结果集中使用php。Thanks,下次我不会急于提供答案,会正确测试并显示工作代码链接,了解到这一点,谢谢@mickmackusa