简体   繁体   English

使用json_encode时遇到问题?

[英]Problem in use of json_encode?

I insert data with json_encode() in database, now i want get( select * from <table> ... ) only name_unitsin of database? 我在数据库中插入带有json_encode()的数据,现在我只想获取( select * from <table> ... )仅数据库的name_unitsin i want output this-> salam & mokhles & fadat 我要输出此-> salammokhlesfadat

In database row units : 以数据库行units

[{"name_units":"salam","price_units":"74,554","checkbox_units":["minibar","mobleman"]},
 {"name_units":"mokhles","price_units":"4,851,269","checkbox_units":["mobleman","tv"]},
 {"name_units":"fadat","price_units":"85,642","checkbox_units":["minibar","mobleman","tv"]}]

.

$query_hotel_search = $this->db->query("SELECT * FROM hotel_submits WHERE name LIKE '%$hotel_search%' ORDER BY name asc");
$data = array();
foreach ($query_hotel_search->result() as $row)
{
   $units = json_decode($row->units);
   $data[] = array('name' => $row->name, 'units' =>$units['name_units']); // Line 24
}
echo json_encode($data);

This is output above code: 这是上面的代码输出:

A PHP Error was encountered 遇到PHP错误
Severity: Notice 严重程度:注意
Message: Undefined index: name_units 消息:未定义的索引:name_units
Line Number: 24 行号:24

[{"name":"Jack","units":null}] [{“ name”:“ Jack”,“ units”:null}]

You're getting an array of stdClass objects as a result from json_decode , rather than an associative array as you'd expect. json_decode获得的结果是stdClass对象数组,而不是您期望的关联数组。 It looks like you've got an array of JSON strings located in the same cell of your DB. 看来您在数据库的同一单元中有一个JSON字符串数组。

Assuming that's how your DB table is structure, if you want to output 如果要输出,假设这就是数据库表的结构

salam & mokhles & fadat 萨拉姆mokhles&fadat

then try this: 然后试试这个:

foreach( $query_hotel_search->result() as $row ) {
    $units = json_decode( $row->units );
    $names = '';
    foreach( $units as $unit ) {
        $names .= "{$unit->name_units} & ";
    }
}
echo substr( $names, 0, -2 );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM