Foreach отличается от первого массива в php - PullRequest
0 голосов
/ 09 января 2020

Это то, что я пытался

$a = array("a", "b", "c");
$b = $a[0];

if (array_search($b,$a) == 0) {
    echo $a[0]." and some code";
}
else {
    foreach($a as $c) {
        echo $c."and some different code";
    }
}

И я хочу, чтобы результат был

a and some code
b and some different code
c and some different code etc...

Ответы [ 3 ]

0 голосов
/ 09 января 2020

Вы можете использовать foreach с определенным индексом и использовать операторы case / if?

foreach ($arr as $key => $value) {
    if($key==0){
     echo $value . "and some code";
    } else if ($key===1){
     echo $value . "and some different code";
    } else {
      echo $value . "and some even more different code";
    };
};
0 голосов
/ 09 января 2020

Вам нужно перейти на каждый уровень вверх, и вам не нужно искать, если вы явно указали значение. Плюс некоторые другие мелкие исправления. Это решение, наиболее близкое к вашему коду:

$a = array("a","b","c");
$b = $a[0];

foreach($a as $c) {
    if ($b == $c) {
        echo $b . " and some code\n";
    } else {
        echo $c . " and some different code\n";
    }
}
0 голосов
/ 09 января 2020

Ваши логики c нахождения первого элемента кажутся немного избыточными, также как foreach() выполняется, только если он не находит первый элемент (что всегда будет).

To упростите код, просто отобразите первый элемент, используйте array_shift() для удаления этого значения и foreach() для остальной части массива ...

$a=array("a","b","c");

echo $a[0]." and some code".PHP_EOL;
array_shift($a);
foreach($a as $c){
    echo $c." and some different code".PHP_EOL;
}
...