我想从存储在db中的json中提取值,但我找不到它。下面是我的数据库:
+-------------------+-------------------------------------------------+---------------------+---------------------+
| refid | kepribadian | jam_mulai | jam_selesai |
+-------------------+-------------------------------------------------+---------------------+---------------------+
| GAD25D335B0F1DE3B | {"Introversion":"53.3%","Extroversion":"46.7%"} | 2019-08-09 01:16:00 | 2019-08-09 01:19:46 |
| GAD25D32DAE90578A | {"Introversion":"63.3%","Extroversion":"34.7%"} | 2019-08-09 08:55:47 | 2019-08-09 08:56:48 |
+-------------------+-------------------------------------------------+---------------------+---------------------+这是我的模特
public function filter_hasil_mbti($search, $limit, $start, $order_field, $order_ascdesc)
{
$sql = $this->db->select('a.id AS id, a.refid AS refid, CONCAT(b.firstname," ",b.lastname) AS fullname, a.kepribadian AS kepribadian, a.jam_mulai AS jam_mulai, a.jam_selesai AS jam_selesai, a.percentage AS percentage')
->from('jawaban_mbti as a')
->join('registrasi_baru as b', 'a.refid=b.refid', 'left')
->like('a.refid', $search)
->or_like('b.firstname', $search)
->or_like('b.lastname', $search)
->or_like('a.kepribadian', $search)
->or_like('a.jam_mulai', $search)
->or_like('a.jam_selesai', $search)
->order_by($order_field, $order_ascdesc)
->limit($limit, $start)
->get()->result_array();
return $sql;
}因此,我可以访问列kepribadian json作为密钥,并将其全部存储在result_array()中,我如何做到这一点?
谢谢。
更新
这是我的控制器:
public function ajax_jawaban_mbti()
{
$search = $_POST['search']['value'];
$limit = $_POST['length'];
$start = $_POST['start'];
$order_index = $_POST['order'][0]['column'];
$order_field = $_POST['columns'][$order_index]['data'];
$order_ascdesc = $_POST['order'][0]['dir'];
$sql_total = $this->mhasil->count_all_Soal('jawaban_mbti');
$sql_data = $this->mhasil->filter_hasil_mbti($search, $limit, $start, $order_field, $order_ascdesc);
$sql_filter = $this->mhasil->count_filter_hasil_mbti($search);
//print_r($sql_data);die;
$callback = array(
'draw' => $_POST['draw'],
'recordsTotal' => $sql_total,
'recordsFiltered' => $sql_filter,
'data' => $sql_data,
);
//header('Content-Type: application/json');
echo json_encode($callback);
}发布于 2019-08-09 13:04:36
您可以使用json_decode将其转换为如下所示的数组:
示例:
$json = '{"Introversion":"53.3%","Extroversion":"46.7%"}';
$array = json_decode($json)
var_dump($array);我建议将变量的名称从$sql更改为$results,因为您返回的是数组,而不是sql。
更新1:
foreach ($sql as $key => $val) {
// you can add in the second argument of json_decode 1 to have a array instead of a object.
if(isset($val['kepribadian']))
$sql[$key]['kepribadian'] = json_decode($val['kepribadian']);
}结果是这样的:
Array
(
[0] => Array
(
[kepribadian] => stdClass Object
(
[Introversion] => 53.3%
[Extroversion] => 46.7%
[Sense] => 66.7%
[Intuition] => 33.3%
[Thingking] => 46.7%
[Feeling] => 53.3%
[Judging] => 66.7%
[Perceiving] => 33.3%
)
)
[1] => Array
(
[id] => 1337
[refid] => GAD25D335B0F1DE3B
[fullname] => Ravhi Rizaldi
[kepribadian] =>
[jam_mulai] => 2019-08-09 01:16:00
[jam_selesai]] => 2019-08-09 01:19:46
)
)发布于 2019-08-09 13:18:15
我猜您将从select语句中获得一个数据数组,其中"kepribadian“列是值之一。因此,您需要做的是将该列从JSON解码为PHP数组。
原则上像这样,(没有测试)
...
$sqlrec = filter_hasil_mbti(... ...);
$phpArr = json_decode($sqlrec['kepribadian']);
...发布于 2019-08-09 13:21:37
你可以试试
<?php
$json_decoded = json_decode(array_column($rsult, "kepribadian"), true);
?>如果在
true中添加json_decode()参数,结果将作为PHP数组给出。
玩得开心:)
https://stackoverflow.com/questions/57430598
复制相似问题