我正在使用codeigniter库,遇到了一个问题。首先是我的阵列
Array (
[0] => Array (
[product_name] => some data
[product_slug] => some data
[price] => some Data...
[sell_price] => 2000.00
)
[1] => Array (
[product_name] => some data
[product_slug] => some data
[price] => some Data...
[sell_price] => 2000.00
)
)
现在这是我在控制器中的代码:
$this->load->model('product_model');
$data['product']=$this->product_model->get_product();
$this->load->view('show_product',$data);
这是我的型号代码
function get_product()
{
return $this->db->query("SELECT * FROM dt_product")->result_array();
}
最终我的视图代码
<div class="featured_right_gallery_bellow">
<ul class="product_list">
<?php foreach($product as $product)
{?>
<li>
<div class="pro_name"><?php echo $product['product_name'];?></div>
</li>
<?php
}?>
</ul>
</div>
现在我的问题是,我想jst显示product_name的前20个字母。。。。但这里显示的是全名。。。
我知道我可以写一个类似SELECT LEFT(product_name,20),sell_price,price FROM dt_product
的mysql代码。。。但我不想这么做,因为该表包含近20个属性,并且我必须多次更改查询。。。。我只想有人给我指出如何使用偏移量概念显示product_name的前20个字母的解决方案
我试着回显$product['product_name'][20],但在foreach循环中,它抛出了一个未定义索引的错误。。
试试这个:
<div class="pro_name"><?php echo substr($product['product_name'], 0, 20);?></div>
在此处阅读函数substr()
:http://php.net/manual/en/function.substr.php
编辑:
如果你想直接在你的数组中进行编辑(我认为没有必要):
假设$array
是数组:
Array (
[0] => Array (
[product_name] => some data
[product_slug] => some data
[price] => some Data...
[sell_price] => 2000.00
)
[1] => Array (
[product_name] => some data
[product_slug] => some data
[price] => some Data...
[sell_price] => 2000.00
)
)
然后这样做:
// Iterating through each of the elements of the array.
// $productArray gets loaded as each inner array value.
foreach ($array as $key => $productArray) {
// The value of $array[$key] is the current inner array.
// The substr() just gets the value of the product_name key and returns the first 20 characters.
// To load the modified value, set $array[$key]['product_name'] to the modified value.
$array[$key]['product_name'] = substr($productArray['product_name'], 0, 20);
}