2016-01-14 95 views
0

我想创建一个数组,其中包含两个数组,但是当我打印它或将其转换为json时,我得到一个对象,该对象的变量索引名称用于创建子阵列。数组创建对象索引名称变量

$var1 = []; 
    $var2 = []; 

    if ($stmt = $mysqli->query('SELECT id FROM table1')) { 
     while($id = $stmt->fetch_object()) { 
      $var1[] = $id; 
     } 
     $stmt->close(); 
     unset($id); 
    } 

    if ($stmt = $mysqli->query('SELECT id FROM table2')) { 
     while($id = $stmt->fetch_object()) { 
      $var2[] = $id; 
     } 
    } 

    return array($var1, $var2); 

当我打印var_dump($result);

array(2) { [0]=> array(1) { [0]=> object(stdClass)#14 (1) { ["id"]=> string(1) "1" } } [1]=> array(0) { } } 

为什么会出现与索引名ID的对象?

我只需要含有2子阵列的简单阵列,并打印出来内部的两个select元素:

$.get('/get?op=4', function (data) { 
     var content = data, 
      sale = content[0], 
      rent = content[1]; 
      alert(sale); 
     $('select[name="lists-sale"]').html(sale); 
     $('select[name="lists-rent"]').html(rent); 
    }); 

我回声和编码在JSON取之于在/get?op=4文件中的函数返回。

回答

3

你打电话给$ stmt-> fetch_object(),你会得到你所要求的 - 一个代表从数据库返回的一行数据的对象。

更换

while($id = $stmt->fetch_object()) { 
    $var1[] = $id; 
} 

while($row = $stmt->fetch_object()) { 
    $var1[] = $row->id; 
} 

获取ID数组。

+0

Oooh,你刚到我那里:) – MajorCaiger

+0

嗯我不知道,所以这就是为什么我得到一个对象和数字作为字符串,而不是一个整数...谢谢! (我会在3分钟内接受) –

0

$stmt->fetch_object()获取包含结果的对象。

对象代表您选择的整行,而不是单个列。

如果您选择多个列,您的对象将包含多个属性。

+1

从何时'mysqli'贬值? – Matt

+0

我的不好,被mysql_ *函数混淆了 – MajorCaiger

+0

PDO还是更好:) – MajorCaiger

相关问题