Зацикливание многомерного массива и проверка, если тогда в PHP - PullRequest
0 голосов
/ 28 октября 2018

У меня есть

<?php

//array[x][y] right?
$condition = array
(
array("cat","meow"),
array("cow","moo"),
array("dog","bark"),
);

//Do I need two For loops to be able to go through each array values?

if($condition==array[x]){
    echo array[y];
}
?>

Я пытаюсь перебрать многомерный массив и распечатать массив, если условие верно.Я надеюсь, что мой вопрос не достаточно расплывчат.Но я немного застрял и не знаю, как правильно их просматривать.Я предпочел бы любую помощь или указывать мне в правильном направлении.Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Если я не правильно понял ваш вопрос , то вы можете использовать один цикл foreach() для проверки условия со значением элемента массива.

<?php
$array = array
    (
    array("cat","meow"),
    array("cow","moo"),
    array("dog","bark"),
);
//you can use single foreach() loop to iterate your $array
$condition = 'cat'; //demo condition
print_r($array);
foreach($array as $k=>$v){
    if($condition == $v[0]){
        echo $v[1];
    }
}
?>

DEMO: https://3v4l.org/k7mh0

0 голосов
/ 28 октября 2018

В этом случае вам не нужны две петли, вы можете использовать implode.
Но, как правило, да, вам понадобятся две петли.

$condition = array
(
array("cat","meow"),
array("cow","moo"),
array("dog","bark"),
);

foreach($condition as $cond){
    echo implode(" says ", $cond) . "\n";
}

//cat says meow
//cow says moo
//dog says bark

Обычный метод - сделать петлю дважды, как вы говорите.

foreach($condition as $cond){
    foreach($cond as $item){
        echo $item ." ";
    }
}

Теперь, когда я думаю об этом, вы также можете сделать:

foreach($condition as $cond){
    echo $cond[0] . " says " . $cond[1] . "\n"; 
}

И это даст тот же результат, что и в первом примере.

...