多维数组中的新元素

时间:2014-07-20 23:06:55

标签: php arrays multidimensional-array

我有一段代码将csv文件读入多维数组,但在某些时候我想向数组中添加信息。

人物阵列看起来像这样:

array(4) {
  [0]=> array(2) {
    ["personnumber"]=> string(5) "test1"
    ["personname"]=> string(14) "Test person 1"
  }
  [1]=> array(2) {
    ["personnumber"]=> string(5) "test2"
    ["personname"]=> string(14) "Test person 2"
  }
  [2]=> array(2) {
    ["personnumber"]=> string(5) "test3"
    ["personname"]=> string(14) "Test person 3"
  }
  [3]=> array(2) {
    ["personnumber"]=> string(5) "test4"
    ["personname"]=> string(14) "Test person 4"
  }
}

我想添加一个personid,使数组看起来像这样:

array(4) {
  [0]=> array(2) {
    ["personnumber"]=> string(5) "test1"
    ["personname"]=> string(14) "Test person 1"
    ["personid"]=> string(3) "453"
  }
  [1]=> array(2) {
    ["personnumber"]=> string(5) "test2"
    ["personname"]=> string(14) "Test person 2"
    ["personid"]=> string(3) "454"
  }
  [2]=> array(2) {
    ["personnumber"]=> string(5) "test3"
    ["personname"]=> string(14) "Test person 3"
    ["personid"]=> string(3) "455"
  }
  [3]=> array(2) {
    ["personnumber"]=> string(5) "test4"
    ["personname"]=> string(14) "Test person 4"
    ["personid"]=> string(3) "456"
  }
}

personid来自数据库,我构建了下面的代码来修改人员数组:

foreach ($persons as $row)
{
    $sql = "SELECT personid FROM persons WHERE person = '". $row['personname'] ."'";

    $result = mysqli_query($link, $sql);
    $cell = mysqli_fetch_row($result);

    $persons[$row]['personid'] = $cell['personid'];
}

执行时我得到以下错误: 警告:X行上script.php中的非法偏移类型 注意:未定义的索引:第X行的script.php中的personid

我做错了什么?

我也试过array_push($persons[$row]['personid'], $cell['personid']);,但这也不起作用。

请帮忙!

2 个答案:

答案 0 :(得分:0)

试试这个:

foreach ($persons as $key => $row)
{
    $sql = "SELECT personid FROM persons WHERE person = '". $row['personname'] ."'";

    $result = mysqli_query($link, $sql);
    $cell = mysqli_fetch_row($result);

    $persons[$key]['personid'] = $cell['personid'];
}

答案 1 :(得分:0)

您是否阅读过文档? http://php.net/manual/en/function.mysql-fetch-row.php

mysql_fetch_row返回一个枚举数组(就像在文档的第一行中所说的那样)。 您可能希望使用键0($ cell [0])或mysql_fetch_assoc()代替使用$ cell ['personid']。

BTW:你想要转义你在查询中输入的数据(名称)。请参阅http://php.net/manual/en/function.mysql-real-escape-string.php