我在数组中使用php array unerialialize和serialialize,数组独特,但我不希望product array array具有对象" 0" 1"等如果超过3
我想有这样的输出:
`
{
"pesanan": [
{
"id_pesanan": "59",
"id_user": "39",
"id_beli": "29500075",
"id_bank": "8",
"kode_pesanan": "BRO-AHP5-170917-51SY",
"tgl_pesanan": "2017-09-17 06:38:35",
"harga_pesanan": "266000",
"harga_ongkir": "16000",
"kurir_pengiriman": "J&T Express REG",
"status_pesanan": "pending",
"produk": [
{
"nama_produk": "Kartu Ucapan",
"id_pesanan": "295035434"
},
{
"nama_produk": "Kartu Ucapan",
"id_pesanan": "295035434"
},
{
"nama_produk": "Square Card",
"id_pesanan": "295035312"
},
{
"nama_produk": "Square Card",
"id_pesanan": "295035312"
},
{
"nama_produk": "Kartu Nama",
"id_pesanan": "295035220"
}
]
}
],
"success": "1"
}
`
但是我有这样的输出:
` "pesanan": [
{
"id_pesanan": "59",
"id_user": "39",
"id_beli": "29500075",
"id_bank": "8",
"kode_pesanan": "BRO-AHP5-170917-51SY",
"tgl_pesanan": "2017-09-17 06:38:35",
"harga_pesanan": "266000",
"harga_ongkir": "16000",
"kurir_pengiriman": "J&T Express REG",
"status_pesanan": "pending",
"produk": {
"0": {
"nama_produk": "Kartu Ucapan",
"id_pesanan": "295035434"
},
"2": {
"nama_produk": "Square Card",
"id_pesanan": "295035312"
},
"4": {
"nama_produk": "Kartu Nama",
"id_pesanan": "295035220"
}
}
}
],
"success": "1"
}`
这是我的php代码:
`
<?php
require_once('include/db_connect.php');
$sql = "SELECT * FROM `pesanan` ORDER BY id_pesanan DESC";
$response = mysqli_query($con, $sql);
if (mysqli_num_rows($response) > 0 ) {
$result = array();
$result ["pesanan"] = array();
while ($data = mysqli_fetch_assoc($response)) {
$h['id_pesanan'] = $data['id_pesanan'];
$h['id_user'] = $data['id_alamat'];
$h['id_beli'] = $data['id_beli'];
$h['id_bank'] = $data['id_bank'];
$h['kode_pesanan'] = $data['kode_pesanan'];
$h['tgl_pesanan'] = $data['tanggal_pesanan'];
$h['harga_pesanan'] = $data['harga_pesanan'];
$h['harga_ongkir'] = $data['harga_ongkir'];
$h['kurir_pengiriman'] = $data['kurir_pengiriman'];
$h['status_pesanan'] = $data['status_pesanan'];
$id_beli = $data['id_beli'];
$sql2= mysqli_query($con, "SELECT * FROM `keranjang`
INNER JOIN `produk`
ON keranjang.`id_produk` = produk.`id_produk`
INNER JOIN `pesanan_file`
ON keranjang.`id_pesanan` = pesanan_file.`id_pesanan`
WHERE keranjang.`id_beli`='".$id_beli."' ");
/*$h["produk"] = array();*/
$produk = array();
while ($data2 = mysqli_fetch_array($sql2)) {
$produk[] = array('nama_produk' => $data2['nama_produk'] , 'id_pesanan' => $data2['id_pesanan'],);
$h["produk"] = array_map("unserialize", array_unique(array_map("serialize", $produk)));
}
array_push($result["pesanan"], $h);
}
$result["success"] = "1";
echo json_encode($result);
}else {
$result["success"] = "0";
echo json_encode($result);
}
?>`
任何帮助将不胜感激
您对array_unique
的使用删除了相同的数组值(仅留下一个实例),但是它也杀死了中间的数字键。
您的选项是删除array_unique
调用,并在阵列中包含重复条目或重置阵列:
<?php
require_once('include/db_connect.php');
$sql = "SELECT * FROM `pesanan` ORDER BY id_pesanan DESC";
$response = mysqli_query($con, $sql);
if (mysqli_num_rows($response) > 0 ) {
$result = array();
$result ["pesanan"] = array();
while ($data = mysqli_fetch_assoc($response)) {
$h['id_pesanan'] = $data['id_pesanan'];
$h['id_user'] = $data['id_alamat'];
$h['id_beli'] = $data['id_beli'];
$h['id_bank'] = $data['id_bank'];
$h['kode_pesanan'] = $data['kode_pesanan'];
$h['tgl_pesanan'] = $data['tanggal_pesanan'];
$h['harga_pesanan'] = $data['harga_pesanan'];
$h['harga_ongkir'] = $data['harga_ongkir'];
$h['kurir_pengiriman'] = $data['kurir_pengiriman'];
$h['status_pesanan'] = $data['status_pesanan'];
$id_beli = $data['id_beli'];
$sql2= mysqli_query($con, "SELECT * FROM `keranjang`
INNER JOIN `produk`
ON keranjang.`id_produk` = produk.`id_produk`
INNER JOIN `pesanan_file`
ON keranjang.`id_pesanan` = pesanan_file.`id_pesanan`
WHERE keranjang.`id_beli`='".$id_beli."' ");
/*$h["produk"] = array();*/
$produk = array();
while ($data2 = mysqli_fetch_array($sql2)) {
$produk[] = array('nama_produk' => $data2['nama_produk'] , 'id_pesanan' => $data2['id_pesanan'],);
$h["produk"] = array_map("unserialize", array_unique(array_map("serialize", $produk)));
}
// Reset array keys to fix items removed by array_unique
$h['produk'] = array_values($h['produk']);
array_push($result["pesanan"], $h);
}
$result["success"] = "1";
echo json_encode($result);
}else {
$result["success"] = "0";
echo json_encode($result);
}
?>`