编辑: 我找到了答案,所以如果我们必须循环两次并在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);
答案 0 :(得分:1)
经过几个小时的尝试,我解决了问题。 因此,如果您必须将数据从数据库转换为json格式,并通过指定键来分离数据。只是做:
$data1=array_merge($data1,$result->fetch_all(MYSQLI_ASSOC));
位置:
$ data1-第一个数组的名称(键号1的值)
$ result-> fetch_all(MYSQLI_ASSOC)-数组格式,其中键是行名,值是行中的数据。
array_merge-将新阵列与旧阵列连接,而无需在现有阵列中创建其他阵列。