从条件化的foreach循环中获取第一个和最后一个数据

时间:2018-03-09 09:29:01

标签: php loops foreach

你好我在这里有一个怪异的问题,我想要来自for-each循环的第一个数据和最后一个数据。为此,我看到this回答。这将是非常有帮助的,但在这里,我的情况确实有点复杂。 我有循环如下

<?php
    $count = 0;
    $length = count($myDataArray);
    foreach ($myDataArray as $value) {
        if($count >= 7)
        {
            //Some Data to Print
            //this is first data for me

            <tr >
                <td><?=$myfinaldate?></td>
                <td><?=$stockdata[1]?></td>
                <td><?=$stockdata[2]?></td>
                <td><?=$stockdata[3]?></td>
                <td <?php if($count == 8)echo "style='background-color:#47ff77;'"; ?>><?=$stockdata[4]?></td>
                <td><?=$stockdata[5]?></td>
                <td><?php echo $mydate; ?></td>
            </tr>
            <?php

        }
        $count++;
    }

现在如何从循环中获取第一个和最后一个数据?

3 个答案:

答案 0 :(得分:0)

我想你可以使用你的length属性。 由于您拥有阵列的总数,请检查 myDataArray[0]myDataArray[$length-1]

答案 1 :(得分:0)

要获取数组的第一个和最后一个值,请使用以下函数:

$array = $myDataArray;

$array_values = array_values($myDataArray);

// get the first value in the array
print $array_values[0]; // prints 'first item'

// get the last value in the array
print $array_values[count($array_values) - 1]; // prints 'last item'

答案 2 :(得分:0)

您可以使用array_values删除数组的键并用索引替换它们。如果执行此操作,则可以直接访问指定的字段。像这样,您可以检查阵列上的要求,而不会对其进行循环,如下面的if - 条件所示:

$length = count($myDataArray);
$dataArrayValues = array_values($myDataArray);
$wantedFields = [];
if ($length >= 8) {
    $wantedFields[] = $dataArrayValues[7];
    if ($length > 8) {
        $wantedFields[] = end($dataArrayValues);
    }
}

由于条件原因,如果它也是最后一个字段,你将不会两次打印第8个字段。

foreach ($wantedFields as $value) {
    <tr>
    ... //Your previous code
    </tr>
}