Php 创建其键和值依赖于其他数组的数组

Php 创建其键和值依赖于其他数组的数组,php,arrays,Php,Arrays,有一些主题缩小了我的问题范围,但没有人允许我解决它。我有一个术语的csv文件,我想从中计算数据库表中的数字,并将结果写入一个新的csv文件。 我需要创建一个新数组,其中每个键都是第一个数组的一个项,值是数据库中相关记录的数量。 以下是一些输入示例: 乳糖 丝氨酸 我想得到这样的东西: 乳糖,25 丝氨酸,3 因此,我创建了一个数组,其值是csv文件中的术语。 然后在sql查询中输入该数组的值。 然后,我一直无法在互联网或php文档中找到正确的方法。最后一行完全失败了,但我尝试了,因为它似乎是管理

有一些主题缩小了我的问题范围,但没有人允许我解决它。我有一个术语的csv文件,我想从中计算数据库表中的数字,并将结果写入一个新的csv文件。 我需要创建一个新数组,其中每个键都是第一个数组的一个项,值是数据库中相关记录的数量。 以下是一些输入示例:

乳糖

丝氨酸

我想得到这样的东西:

乳糖,25

丝氨酸,3

因此,我创建了一个数组,其值是csv文件中的术语。 然后在sql查询中输入该数组的值。 然后,我一直无法在互联网或php文档中找到正确的方法。最后一行完全失败了,但我尝试了,因为它似乎是管理我任务的更狭隘的手段

有人能帮我吗

提前谢谢

$termslist= array();

$file = fopen('fileterms.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {
//$line is an array of the csv elements
  foreach ($line AS $molindice => $molvalues) 
  {
    if ( ! in_array( $molvalue, $termslist ) )
            {array_push($termslist, $molvalues);}
  }
}

fclose($file);


//print_r ($termslist);

$molnumbers = array();

foreach ($termslist as $ancientkey => $ancientvalue)
{
    echo $ancientvalue;
    $sql3 = "SELECT content from mols WHERE content like '% $ancientvalue %'";
    $result3 = mysql_query($sql3)or die(mysql_error());
    $count3 = mysql_num_rows($result3);
    echo $count3;
    $molnumbers [$ancientvalue['molnames']] = $count3['quantities'];
}
更改:

$molnumbers [$ancientvalue['molnames']] = $count3['quantities'];
致:

或:

行中:

if ( ! in_array( $molvalue, $termslist ) )
您有一个小错误,应该是:

if ( ! in_array( $molvalues, $termslist ) )
那么在这一行:

$molnumbers [$ancientvalue['molnames']] = $count3['quantities'];
$ancientvalue本身已经是值(或名称),而不是数组本身。 因此,线路只需:

    $molnumbers [$ancientvalue] = $count3['quantities'];
然后它应该将数字放入数组的正确部分。 对于sql本身:

$sql3 = "SELECT content from mols WHERE content like '% $ancientvalue %'";
在我看来,您正在搜索%BLANKancientvalueBLANK%,如果不是这样的话 您希望在此处执行此操作,但要查找%ancientvalue%,应将该行修改为:

$sql3 = 'SELECT content from mols WHERE content like \'%'.$ancientvalue.'%\'';

谢谢你们两位!我会根据你的建议进行更改,并立即进行测试
$sql3 = "SELECT content from mols WHERE content like '% $ancientvalue %'";
$sql3 = 'SELECT content from mols WHERE content like \'%'.$ancientvalue.'%\'';