помогите с массивом для последнего поля в php или codeigniter - PullRequest
1 голос
/ 22 марта 2011

Я был на этом в течение дня и до сих пор не могу решить это, хотя это должно быть довольно просто. У меня есть php-код.

    foreach($cart as $line=>$item)
{
    echo form_open("sales/edit_item/$line");
?>


    <td style="align:center;"><?php echo $item['name']; ?></td>



    <?php if ($items_module_allowed)
    {
    ?>
        <td><?php echo form_input(array('name'=>'price','value'=>$item['price'],'size'=>'6'));?></td>
    <?php
    }
    else
    {
    ?>
        <td><?php echo $item['price']; ?></td>
        <?php echo form_hidden('price',$item['price']); ?>
    <?php
    }
    ?>

    <td>
    <?php
        if($item['is_serialized']==1)
        {
            echo $item['quantity'];
            echo form_hidden('quantity',$item['quantity']);
        }
        else
        {
            echo form_input(array('name'=>'quantity','value'=>$item['quantity'],'size'=>'2'));
        }
    ?>
    </td>
    </div></div>

    <td><?php echo to_currency($item['price']*$item['quantity']-$item['price']*$item['quantity']*$item['discount']/100); ?></td>

    <?php
        if($item['allow_alt_description']==1)
        {
        }
        else
        {
            if ($item['description']!='')
            {
            }
            else
            {
            }
        }
    ?>
    </td>
    <td>&nbsp;</td>
    <td style="color:#2F4F4F";>
    <?php
        if($item['is_serialized']==1)
        {
        }
    ?>
    </td>
    <td colspan=3 style="text-align:left;">
    <?php
        if($item['is_serialized']==1)
        {
        }
    ?>
    </td>


    </tr>
    <tr style="height:3px">
    <td colspan=8 style="background-color:white"> </td>
    </tr>       </form>
<?php
}

} ?>

Это создает поля с соответствующими данными и работает нормально. Мне просто нужно получить последнее поле и повторить его, я перепробовал все, и он все еще проходит через массив или не работает. Это может быть просто для кого-то другого, но это смутило меня на один день.

Ответы [ 2 ]

4 голосов
/ 22 марта 2011

Когда вы используете цикл, такой как for или foreach или while, он будет перебирать каждый отдельный дочерний элемент массива, пока не достигнет конца.Вам не нужно зацикливаться, вам просто необходим доступ к последнему элементу массива, например:

$lastLine = end( array_keys($cart) );
echo form_open("sales/edit_item/{$lastLine}");

Редактировать: Теперь, когда я немного лучше понимаю:

$lastItem = array_slice($cart, -1, null, true);
$line = key($lastItem);
$item = reset($lastItem);
echo form_open("sales/edit_item/{$line}");
?>
<!-- do all your html-ish stuff here. -->
0 голосов
/ 22 марта 2011
$cart = array();

$cart[0] = 'zero';
$cart[1] = 'one';
$cart[2] = 'two';

$_cart = array_keys($cart);    
$_cart = array_pop($_cart);

$key    = $_cart;
$value  = $cart[$_cart];

echo $key . ' - ' . $value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...