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

Например: только строки 5 и 9 имеют некоторые данные, другие строки пусты. Количество столбцов фиксировано - 6

Я не объявил никакого размера для 2D-массива.

Я хочу найти все поля, значение которых равно 10.

for ($t1=0; $t1 < count($array); $t1++) { 

    for ($t2=0; $t2 < 6; $t2++) { 

        if($array[$t1][$t2] == 10) {
            // do something
        }
    }
}

Теперь этот код не будет работать, потому что count ($ array) будет равен 2, поэтому он никогда не будет повторяться для строк 5 и 9.

Мне также нужно получить индекс, по которому я нашел совпадение.

Как я могу написать код, чтобы он работал в этом случае?

php
0
user5155835 28 Май 2017 в 21:20

2 ответа

Лучший ответ

Вы можете эффективно использовать foreach в этом случае:

foreach($array as $s => $arrayElement) {
    for($t=0; $t<6; $t++) if ($arrayElement[$t] == 10) {
         // do something - $s is the row index, $t is the column index
    }
}
1
Lukasz032 28 Май 2017 в 18:31

Я думаю, у вас есть проблема в определении массива. Может быть, вы можете использовать этот скрипт.

<?php
$cars = array(
    array(
        "Volvo",
        22,
        18
    ),
    array(
        "BMW",
        15,
        13
    ),
    array(
        "Saab",
        5,
        2
    ),
    array(
        "Land Rover",
        17,
        15
    ),
    array(
        "Mercedes",
        22,
        19
    )
);

$length = count($cars);

for ($i = 0; $i < $length; $i++) {
    for ($j = 0; $j < 3; $j++) {
        echo $cars[$i][$j] . "</br>";
    }
}

?>

Надеюсь, это решит вашу проблему.

0
mehfatitem 28 Май 2017 в 18:31