получить первый объект из массива результатов php

1

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

    <?php
$result = array_chunk($products->result_array(), 3);

foreach($result as $products){  ?>
    <table style="width:100% style="page-break-after:always;"   >

    <tr>

    <?php 
    foreach($products as $productArray){
        $product = (object) $productArray;
        echo '<td>';
    ?>

    <div style="width: 100%; height: 210px;  border: 1px solid #dddddd; margin: auto 5px 5px 0; padding: 5px;">
            <div class="box-header">
                <p class="box-title"><FONT SIZE=12><?php echo $product->product_name; ?></FONT></p>
            </div>
            <div style="height: 100px; text-align: center;">
                <?php echo '<img src="'.'uploads/'. $product->photo.'" class="img-responsive" style="height:100px !important; width: 150px !important"  />'; ?>
            </div>

            <div style="clear: both"></div>
            <table class="table table-responsive">
                <tr>
                    <th><FONT SIZE=12>ID</FONT></th>
                    <td><FONT SIZE=14><?php echo $product->product_id; ?></FONT></td>
                </tr>

$ result - массив объекта, который я получаю из формы. Ниже вы можете ясно видеть, что я разбиваю его на еще 3 массива и зацикливаю, хотя отдельные объекты и получаю их данные в html, например.

 <tr>
                    <th><FONT SIZE=12>ID</FONT></th>
                    <td><FONT SIZE=14><?php echo $product->product_id; ?></FONT></td>
                </tr>

Я хочу получить первую информацию об объекте, скажем, хочу получить $product-> product_name первого объекта массива результатов, не входя в цикл, как это сделать.

Изображение 174551

здесь полный код файла просмотра.

<!DOCTYPE html>
<html class="bg-black">
<head>
    <meta charset="UTF-8">
    <title><?php if(isset($title)) echo $title.' | '; ?>  Sales agent management software (SAMS) </title>

    <style>
        body{
            font-size: 9px;
            margin: 20px;
        }
        th,td,p,div,table,h3{margin:0;padding:0}

        @page { margin: 20px; }

        .header{
            border-bottom: 0px solid #dddddd;
            text-align: center;
            position: fixed; top: 0;
        }
        .footer { position: fixed; bottom: 0px; text-align: center }
        .pagenum:before { content: counter(page); }

    </style>
</head>

<body>




   <?php
    $usd = get_option('lkr_per_usd', 134);
    ?>



<div class="footer">

Page: <span class="pagenum"></span>, creation time : <?php echo date('l jS \of F Y h:i:s A') ?>, create by: <?php echo user_full_name(singleDbTableRow(loggedInUserData()['user_id'])); ?>, $ Rate : Rs. <?php echo $usd; ?> </div>


<br />
<div class="box-body">

    <?php
    $usd = get_option('lkr_per_usd', 134);
    ?>


    <?php
    $result = array_chunk($products->result_array(), 3);

    foreach($result as $products){  ?>
        <table style="width:100% style="page-break-after:always;"   >

        <tr>

        <?php 
        foreach($products as $productArray){
            $product = (object) $productArray;
            echo '<td>';
        ?>

        <div style="width: 100%; height: 210px;  border: 1px solid #dddddd; margin: auto 5px 5px 0; padding: 5px;">
                <div class="box-header">
                    <p class="box-title"><FONT SIZE=12><?php echo $product->product_name; ?></FONT></p>
                </div>
                <div style="height: 100px; text-align: center;">
                    <?php echo '<img src="'.'uploads/'. $product->photo.'" class="img-responsive" style="height:100px !important; width: 150px !important"  />'; ?>
                </div>

                <div style="clear: both"></div>
                <table class="table table-responsive">
                    <tr>
                        <th><FONT SIZE=12>ID</FONT></th>
                        <td><FONT SIZE=14><?php echo $product->product_id; ?></FONT></td>
                    </tr>
                    <tr>
                        <th><FONT SIZE=12>LKR</FONT></th>
                        <td><FONT SIZE=14><?php $lkr = get_selling_price($product);
                            echo  number_format(round($lkr, get_option('round_precision')) ); ?></FONT>
                        </td>
                    </tr>
                    <tr>
                        <th> <FONT SIZE=12>US $</FONT></th>
                        <td><FONT SIZE=14><?php echo number_format(round(lkr_to_usd($lkr), get_option('round_precision')) ); ?></FONT></td>
                    </tr>
                </table>
                        <?php $GLOBALS['a']= $product->product_id; ?>
        </div>

            </td>
        <?php } ?>

    </tr>

    <?php } ?>

    </table>
</div><!-- /.box-body -->


</body>

</body>
</html>
  • 1
    Кодирование в виду совершенно неправильно
  • 0
    @Abdulla это хорошо .. я добавил половину кода ..
Показать ещё 4 комментария
Теги:
arrays
multidimensional-array
codeigniter

1 ответ

2
Лучший ответ

хорошо, как я сказал, вам нужно изменить свой способ написания кодов, но о вашем конкретном вопросе используйте это:

$result = array('a', 'b', 'c', 'd', 'e');
reset($array);
$first = current($array);

вы можете проверить это:

http://php.net/manual/en/function.reset.php

http://php.net/manual/en/function.current.php


Но все-таки о вашем способе кодирования. u должен скоро перейти на MVC или такие способы программирования, чтобы вы могли отделить свою логику просмотра и кодирования

например, u может иметь страницу типа view_profile.php которая будет показывать информацию пользователя. в обычном кодировании у:

view_profile.php:

<?php session_start();

// you check sessions to see if the user is logged in and has the right to view this page.
// like:

if ($_SESSIONS['is_user_logged_in']){
   $username=$_SESSIONS['username'];
   $name=$_SESSIONS['name'];
   // ....
}else{
    header('location: ./login.php');// if user is not authenticated u redirect to login page
    exit();// prevents the rest of codes to be shown and executed 
}
?>
<html>
<head>

<title>View <?php echo $name; ?> profile</title>

</head>
<body>
   <div>Name: <span><?echo $name; ?></span></div>
   ......
</body>

</html>

Но лучшим способом вы можете сделать это следующим образом:

у вас есть файлы вроде

'view_profile.htm'//содержит HTML 'view_profile.php//содержит PHP-логику' inc.php '//содержит некоторые полезные функции, которые помогут вам в написании логики PHP

view_profile.htm

<html>
<head>

<title>View <?php echo $name; ?> profile</title>

</head>
<body>
   <div>Name: <span><?echo $name; ?></span></div>
   ......
</body>

</html>

inc.php

<?php

function ses_start(){
    if(!session_id()){
        session_start();
   }
}

function ses_get($key){
    ses_start();
    if(!empty($_SESSION[$key])){
        return $_SESSION[$key];
    }
    return NULL;
}

function ses_set($key,$val){
    $_SESSION[$key]=$val;
}

function is_user_loggedin(){
    ses_start();
    if(!empty(ses_get('is_user_loggedin')){
        return true;
    }
    return false;
}

function go($to){
    header('location: '.$to);
    exit();
}

//and lots of useful functions that help u connect and work with data base.

view_profile.php

<?php 

include('inc.php');

if(is_user_loggedin(){
    $username=ses_get('username');
    $name=ses_get('name');
    //...
}else{
    go('login.php);
}

include('view_profile.html); // and u call the .htm file that holds the HTML the view file)

?>

это был простой пример разделения логики кода (php-коды) из представлений (html-тегов)

а также вы можете искать в MVC Model-View-Controller и попробовать работать с простыми фреймворками MVC.

  • 0
    спасибо .. текущий массив хорош для меня. :)
  • 0
    Добро пожаловать, но, как друг, я советую вам проверить остальную часть ответа, а также ссылки. потому что вы увидите, что вам нужно разделить свою логику и представление. - удачи

Ещё вопросы

Сообщество Overcoder
Наверх
Меню