【问题标题】:Add array element to an array formed by database query将数组元素添加到数据库查询形成的数组中
【发布时间】:2017-09-06 15:59:13
【问题描述】:

我正在构建一个电话簿应用程序,它将从我们的电话系统生成一个分机列表。电话系统有两个元素; “名称”和“扩展名”。我想把名字分成名字和姓氏。我已经用以下方法做到了:

list($ln,$fn) = explode(' ',$contact[1],2);

问题是,我想将 $ln 和 $fn 添加到由数据库查询形成的数组中。这样做的原因是因为我正在从数组中创建一个 json。我尝试了以下方法,但似乎没有将 fname 和 lname 元素添加到数组中:

$contact_array = array();
while ($contact=mysql_fetch_array($QUERYresult))
{
 if(preg_match('/\s/',$contact[1]))
 {
  //$count++;
  $contact_array[] = $contact;
  list($ln,$fn) = explode(' ',$contact[1],2);
  $contact['fname'] = $fn;
  $contact['lname'] = $ln;
 }
 fwrite($myJSON, json_encode($contact_array));

这个数组的输出只返回数据库查询,如下所示:

Array
(
    [0] => Array
        (
            [extension] => 1000
            [name] => Extension 1
        )

    [1] => Array
        (
            [extension] => 1001
            [name] => Extension 2
        )
    )

【问题讨论】:

  • 请停止使用mysql_ DB 库。它在几年前就已停产和弃用,并在 PHP7 中完全删除,主要是由于安全问题。尽快切换到使用mysqliPDO
  • $contact 会在您执行 $contact_array[] = $contact; 时添加到 $contact_array。它不是通过引用添加的。

标签: php mysql arrays json


【解决方案1】:

问题似乎主要是您在将原始版本的 $contact 传递给 $contact_array 之后添加值。因此,您添加的额外值不包含在其中。尝试将这些行移到之前$contact_array[] = $contact;

if(preg_match('/\s/',$contact[1]))
{
  //$count++;
  list($ln,$fn) = explode(' ',$contact[1],2);
  $contact['fname'] = $fn;
  $contact['lname'] = $ln;
  $contact_array[] = $contact;
}

【讨论】:

  • 谢谢。这是我的问题!
  • @Intrepid 没问题。如果对您有用,请记住将答案标记为已接受 - 谢谢:-)
猜你喜欢
  • 2014-07-08
  • 2015-05-11
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 2012-01-23
  • 2023-03-10
相关资源
最近更新 更多