简体   繁体   English

如何通过使用PHP中的foreach循环仅获取数组的前两个元素?

[英]How can I get only the first two elements of an array by using a foreach loop in PHP?

I have an array like this: 我有一个像这样的数组:

$aMyArray = array(
            "bmw"=>"user1",
            "audi"=>"user2",
            "mercedes"=>"user3"
);

And I only want to show the first two elements bmw=>user1 and audi=>user2 . 我只想显示前两个元素bmw=>user1audi=>user2 But I want it by using a foreach loop. 但是我想要通过使用foreach循环来实现。

If you want the first 2 by name: 如果要按名称输入前两个:

Using in_array ( documentation ) is what you looking for: 您要使用in_array文档 ):

$aMyArray = array("bmw"=>"user1", "audi"=>"user2", "mercedes"=>"user3");
$valuesToPrint = array("bmw", "audi");
foreach($aMyArray as $key => $val) {
    if (in_array($key, $valuesToPrint))
        echo "Found: $key => $val" . PHP_EOL;
}

If you want the first 2 by index use: 如果要按索引使用前2个,请使用:

init index at 0 and increment in each iteration as: 初始索引为0,每次迭代递增为:

$aMyArray = array("bmw"=>"user1", "audi"=>"user2", "mercedes"=>"user3");
$i = 0;
foreach($aMyArray as $key => $val) {
    echo "Found: $key => $val" . PHP_EOL;
    if (++$i > 1)
        break;
}

Easiest way: 最简单的方法:

$aMyArray=array("bmw"=>"user1","audi"=>"user2","mercedes"=>"user3");
$i=0;
foreach ($aMyArray as $key => $value) {
 if($i<2)
 {
    echo $key . 'and' . $value;
 }
 $i++;
}
<?php
$aMyArray = array(
            "bmw"=>"user1",
            "audi"=>"user2",
            "mercedes"=>"user3"
);

reset($aMyArray);
echo key($aMyArray).' = '.current($aMyArray)."\n";
next($aMyArray);
echo key($aMyArray).' = '.current($aMyArray)."\n";
$counter = 1;
$max = 2;
foreach ($aMyArray as $key => $value) {
    echo $key, "=>", $value;
    $counter++;
    if ($counter === $max) {
        break;
    }
}

It is important to break execution to avoid arrays of any size looping until the end for no reason. 重要的是中断执行,以避免无缘无故地循环直到最后的任何大小的数组。

I know you're asking how to do it in a foreach , but another option is using array travelling functions current and next . 我知道你在问如何在foreach做到这一点,但另一个选择是使用currentnext数组移动函数。

$aMyArray = array(
            "bmw"=>"user1",
            "audi"=>"user2",
            "mercedes"=>"user3"
);
$keys = array_keys($aMyArray);
//current($array) will return the value of the current record in the array. At this point that will be the first record
$first = sprintf('%s - %s', current($keys), current($aMyArray)); //bmw - user1
//move the pointer to the next record in both $keys and $aMyArray
next($aMyArray);
next($keys);
//current($array) will now return the contents of the second element.
$second = sprintf('%s - %s', current($keys), current($aMyArray)); //audi - user2

You are looking for something like this 您正在寻找这样的东西

$aMyArray = array(
            "bmw"=>"user1",
            "audi"=>"user2",
            "mercedes"=>"user3"
);
foreach($aMyArray as $k=>$v){
    echo $v;
    if($k=='audi'){
        break;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM