Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
从SQL查询中获取PHP数组后,如何制作它?_Php_Arrays - Fatal编程技术网

从SQL查询中获取PHP数组后,如何制作它?

从SQL查询中获取PHP数组后,如何制作它?,php,arrays,Php,Arrays,我有以下代码: {…} $data=$sql->QueryDB(“从my_表中选择fdNum作为Num,fdUserNum作为User 按fdNum DESC LIMIT 100;“”->获取所有订单(MYSQLI\u ASSOC); echo json_编码($data); 我获得此数组的结果: [ {"Num":"195993","User":"345"}, {"Num":&

我有以下代码:

{…}
$data=$sql->QueryDB(“从my_表中选择fdNum作为Num,fdUserNum作为User
按fdNum DESC LIMIT 100;“”->获取所有订单(MYSQLI\u ASSOC);
echo json_编码($data);
我获得此数组的结果:

[
    {"Num":"195993","User":"345"},
    {"Num":"195992","User":"234"},
    {"Num":"195991","User":"845"}
]
但是我想在输出之前使用一个用户编号函数(
fdUserNum AS User
),它是一个名为
getUsername()
的简单函数,只需在数组中查找给定用户编号的用户名

因此,如果我要将函数放在输出数组中的某个位置,它应该在这里:

[
{“Num”:“195993”,“User”:“getUsername(345)”},
{“Num”:“195992”,“User”:“getUsername(234)”},
{“Num”:“195991”,“User”:“getUsername(845)”}
]
但我似乎不明白如何像那样解剖阵列,而且我还没有在谷歌上找到它


您知道这是如何实现的吗?

如果用户名也存储在数据库中,您可能希望通过SQL中的联接来实现:

SELECT 
    user.username,
    ...
FROM 
    my_table, user 
WHERE 
    my_table.fdUserNum = user.userNum 
...
如果您的用户名存储在应用程序本身或外部服务中(在这种情况下,请注意,您将向该服务发出100个请求,通过批处理请求可能会更好),则
getUsername()
函数应该可以正常工作:

foreach ($data as &$row) { 
    $row['User'] = getUsername($row['User']); 
}

unset($row);
&
将行作为引用,允许您直接更改内部数组的内容。循环后的
unset
用于确保不会意外更改循环后的最后一行
$row

您还可以通过索引执行此操作:

foreach ($data as $idx => $row) { 
    $data[$idx]['User'] = getUsername($row['User']); 
}
您还可以通过填充键并返回结果数组来使用
array\u map
,从而有效地替换数组中的旧数组:

function populateUsername($row) {
    $row['User'] = getUsername($row['User']);
}

$data = array_map('populateUsername', $data);

getUsername
会做什么?另一个问题?如果是这样,那就没有必要了。为此,我们使用
JOIN
s(从其他表中获取相关数据)。如果不是另一个查询,那么只需研究数组映射。是的。因为表不在同一个数据库中,但即使如此,我仍然想知道如何回答我提出的问题,这样我也可以做正常的函数,在这种情况下,它是数组映射。嘿!连接表是不可能的,因为表位于两个不同的数据库中,但我尝试了第二种方法!它就像一个符咒!thanks@Finneas. 将来,我建议您修改getUsername函数,在这种情况下接受一个userid列表,这样您就可以在另一个数据库中作为单个查询来查找它们。然后将用户列表作为
uid=>username
map返回,并在循环中查找uid。如果有必要,请点击我,我将更新答案,更好地描述您如何做到这一点。