我如何使用从数据库中使用fetch从数据库创建的数组创建数组?

时间:2019-04-29 17:22:53

标签: php arrays

编辑: 我找到了答案,所以如果我们必须循环两次并在array中创建array,就可以这样做:

$data1=array_merge($data1,$result->fetch_all(MYSQLI_ASSOC));

我的结构需要如下所示:

['some':[{'num1':1,'num2':2},{'num1':10, 'num2':20}],'nextOne':[{'num1':1,'num2':2},{'num1':10, 'num2':20}],..... (and more...)

我必须从大约4k条记录中创建json数据,因此我将主数据分开,并且做了类似的事情:

$data1 = array();
$data2 = array();
//etc.. up to 14 records

我有一个现有表,但我还创建了一个带有主分隔符的表,用于分隔数据,例如:

$sql1 = "SELECT some.tit AS Title,someExtra.sub AS SubTitle FROM some INNER JOIN someExtra ORDER BY orderNr";
$result1 = $conn->query($sql1);
  while($row = $result1->fetch_assoc()){
  $myData = $row["Title"];
  $my2ndData = $row["SubTitle "];

现在我需要在下一个表中找到该数据并将其传递给我的数组。

$sql2 = "SELECT * FROM main WHERE expect = '$myData' AND expect2 = $my2ndData";
  $result2 = $conn->query($sql2);
    if($myData == 'That i need'){

      $data1+=$result2->fetch_all(MYSQLI_ASSOC);

因此,在示例中,我们有2个循环,例如,如果在“ someExtra”表中将有少数记录与“ some”表匹配,则该记录将查找下一个记录:例如4次。在将数组发送到正确的数组之前,数组中的结果每个数组中都有4,22,1,55,33条记录。但是在脚本结束时,当我要对数组进行计数时,我只会保存33条记录,而不是115条。

我也尝试

array_push($data1, $result2->fetch_all(MYSQLI_ASSOC));

但是那确实起作用了,因为它向现有数组中添加了带有值的数组...所以我不会以数组形式存在数组。

我的最终输出如下:

$outp=array('some'=>$data1,'AnextOne'=>$data2)
$myJSON = json_encode($outp, JSON_NUMERIC_CHECK);

1 个答案:

答案 0 :(得分:1)

经过几个小时的尝试,我解决了问题。 因此,如果您必须将数据从数据库转换为json格式,并通过指定键来分离数据。只是做:

$data1=array_merge($data1,$result->fetch_all(MYSQLI_ASSOC));

位置:

$ data1-第一个数组的名称(键号1的值)

$ result-> fetch_all(MYSQLI_ASSOC)-数组格式,其中键是行名,值是行中的数据。

array_merge-将新阵列与旧阵列连接,而无需在现有阵列中创建其他阵列。