返回多维数组的记录

时间:2017-05-20 16:24:33

标签: php mysql arrays

我有这个数组

 array(5) { 
    [0]=> array(2) { [0]=> string(5) "REFER" [1]=> string(12) "Não Sócios" } 
    [1]=> array(2) { [0]=> string(5) "REFER" [1]=> string(12) "Não Sócios" } 
    [2]=> array(2) { [0]=> string(5) "REFER" [1]=> string(12) "Não Sócios" } 
    [3]=> array(2) { [0]=> string(5) "REFER" [1]=> string(12) "Não Sócios" } 
    [4]=> array(2) { [0]=> string(5) "REFER" [1]=> string(12) "Não Sócios" } 
}

并希望搜索数据库以查找这些“元素”的ID,并构建一个类似下面示例的数组。

$array_ids = ("1,2", "1,2", "1,2", "1,2", "1,2");

也就是说,我想创建一个包含从数据库返回的值的简单数组。

这可能吗?如果是的话,我该怎么做?

我已经设法返回这样的记录

for($i=0; $i<count($subsgroup); $i++) {
    for($j=0; $j<count($subsgroup[$i]); $j++) {
        $sql_groups = $wpdb->prepare("SELECT id FROM $table_name WHERE name = %s", $subsgroup[$i][$j]);
        $rows = $wpdb->get_results($sql_groups);
        foreach($rows as $r) {
            echo $r->id.', ';
        }
    }
    echo '<br>';
}

这将输出类似这样的内容

1, 2,
1, 2,
1, 2,
1, 2,
1, 2,

如何将这些返回的记录放在像

这样的数组中
$array_ids = ("1,2", "1,2", "1,2", "1,2", "1,2");

提前感谢。

2 个答案:

答案 0 :(得分:1)

$array_ids = array();
for($i=0; $i<count($subsgroup); $i++) {
    $ids = array();
    for($j=0; $j<count($subsgroup[$i]); $j++) {
        $sql_groups = $wpdb->prepare("SELECT id FROM $table_name WHERE name = %s", $subsgroup[$i][$j]);
        $rows = $wpdb->get_results($sql_groups);
        foreach($rows as $r) {
            array_push($ids, $r->id);
        }
    }
    array_push( $array_ids , implode(',', $ids) );
}

这里我在内部循环中创建$ids数组,并且在每个查询中,我将数据库中的id附加到该数组。

每次迭代后,我都会将$ids数组附加到父$array_ids数组,并使用$idsimplode内的元素粘贴在一起。

答案 1 :(得分:0)

你永远不应该把一个查询放在一个循环中 - 它可能会导致很多麻烦。如果我理解你的问题我想你可以做类似的事情:

$sql_groups = $wpdb->prepare("SELECT id FROM $table_name WHERE name = 
%s", $subsgroup[$i][$j]);
$rows = $wpdb->get_results($sql_groups);
$array_ids = [];
foreach($rows as $key=>$val){
$array_ids[]=$key;
}

echo $array_ids