将数据库中的两个值推送到一个数组

时间:2015-10-02 11:59:47

标签: php arrays

在第6行,我将数据库中的值推送到名为$ products的数组中。我现在想从数据库($row->image)向与$row->name匹配的相同数组提供另一个值。

使用二维数组可能有意义,但在这种情况下我不知道如何做到这一点。

$products = array();
foreach($_POST['selected_checkboxes'] as $value) {
    if($result = $db->query("SELECT * FROM produkte WHERE $value = 1")){
        while($row = $result->fetch_object()) {
            if (!in_array($row->name, $products)) {
                array_push($products, $row->name);
            }
        }
    }
    else {
        array_push($products, 'error');
    }
}

结果应该显示两个属于一起的值的名称和图像。

3 个答案:

答案 0 :(得分:2)

您可以这样做,假设您已经对$row->name$row->image匹配逻辑进行了排序:

if (!in_array($row->name, $products)) {
   array_push( $products, array('name'=>$row->name, 'image'=>$row->image) );
}

答案 1 :(得分:1)

你可以这样试试:

$products = array();
foreach ( $_POST['selected_checkboxes'] as $value ) {
    if ( $result = $db->query( "SELECT * FROM produkte WHERE $value = 1" ) ) {
        while ( $row = $result->fetch_object() ) {
            // if your name is unique you can do it like this,
            // if not just take $row->id as index
            if( isset( $products[$row->name] ) ) continue;
            $products[$row->name] = array( "name" => $row->name, "image" => $row->image );
        }
    } else {
        array_push( $products, 'error' );
    }
}

// if you want to have plain digits as index you can get a reindexed array
$products = array_values( $products );

然后你会得到一个这样的数组:

array(//$products
  array(
    "name" => "productname",
    "image" => "productimage"
  )
);

答案 2 :(得分:1)

如果您使用stdClass对象,我认为您可以实现这一目标。

$std = new stdClass();
$std->name = $row->name;
$std->image = $row->image;
array_push($products, $std);

或者您可以将SQL查询更改为

SELECT name, image FROM produkte WHERE $value = 1

array_push($products, $row);