0

私は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>

今私の質問は、product_nameの最初の20文字を表示したいということです....しかし、ここではフルネームが表示されています...

私は次のようなmysqlコードを記述できることを知っていSELECT LEFT(product_name,20),sell_price,price FROM dt_productます...しかし、テーブルには20近くの属性が含まれているため、それを実行したくありません。クエリを複数回変更する必要があります。オフセットの概念を使用してproduct_nameの最初の20文字を表示する方法の解決策に

$ product ['product_name'] [20]をエコーし​​ようとしましたが、foreachループを使用すると、未定義のインデックスのエラーがスローされます。

4

1 に答える 1

1

これを試して:

<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);
}
于 2012-09-03T02:45:38.630 に答える