在第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');
}
}
结果应该显示两个属于一起的值的名称和图像。
答案 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);