Как я могу получить только первые два элемента массива с помощью цикла foreach в PHP? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть такой массив:

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

И я хочу показать только первые два элемента bmw=>user1 и audi=>user2.Но я хочу использовать петлю foreach.

Ответы [ 6 ]

0 голосов
/ 15 февраля 2019

Я знаю, что вы спрашиваете, как это сделать в foreach, но другой вариант - использовать функции перемещения массива current и next.

$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
0 голосов
/ 15 февраля 2019
$counter = 1;
$max = 2;
foreach ($aMyArray as $key => $value) {
    echo $key, "=>", $value;
    $counter++;
    if ($counter === $max) {
        break;
    }
}

Важно прервать выполнение, чтобы избежать зацикливания массивов любого размера до конца без причины.

0 голосов
/ 15 февраля 2019
<?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";
0 голосов
/ 15 февраля 2019

Самый простой способ:

$aMyArray=array("bmw"=>"user1","audi"=>"user2","mercedes"=>"user3");
$i=0;
foreach ($aMyArray as $key => $value) {
 if($i<2)
 {
    echo $key . 'and' . $value;
 }
 $i++;
}
0 голосов
/ 15 февраля 2019

Если вам нужны первые 2 по имени:

Использование 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;
}

Если вы хотите, чтобы первые 2 по индексу использовались:

Инициируйте индекс в 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;
}
0 голосов
/ 15 февраля 2019

Вы ищете что-то вроде этого

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