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

时间:2012-07-24 10:13:47

标签: php arrays

有一些话题缩小了我的问题,但没有人允许我解决它。我有一个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'];
}

2 个答案:

答案 0 :(得分:0)

变化:

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

要:

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

或者:

$molname = $ancientvalue['molnames'];
$molnumbers[$molname] = $count3['quantities'];

答案 1 :(得分:0)

在行中:

if ( ! in_array( $molvalue, $termslist ) )

你应该有一个小错误:

if ( ! in_array( $molvalues, $termslist ) )

然后在这一行:

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

$ ancientvalue已经是值(或molname)本身而不是数组本身。 因此,该行只需要:

    $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.'%\'';