Добрый день. Я новичок в php и поэтому уже сломал голову в понимании того, почему этот код не работает как надо. Есть 2 функции. Первая - это рекурсивный прогон по массиву, в которую мы передаем массив и вторую функцию, а вторая сравнивает значение на соответствие и возвращает 1 или 0.
function trace($arr, $func) {
foreach ($arr as $el) {
if (is_array($el)) {
trace($el, $func);
} else {
print_r($el);
$bff = $func($el);
var_dump($bff);
if ($bff) {
return $bff;
}
}
}
}
function sizeFlag($el) {
if ($el >= 120) {
return 1;
} else {
return 0;
}
}
$bigFrameFlag = trace($modules, 'sizeFlag');
var_dump ($bigFrameFlag);
И сам массив:
$modules= array(
array(
'w' => 70,
'h' => 60
),
array(
'w' => 80,
'h' => 120
),
array(
'w' => 80,
'h' => 120
)
);
выводит - >
70 int(0) 60 int(0) 80 int(0) 120 int(1) 80 int(0) 120 int(1)
NULL
Не пойму почему на первом значении 120 код не прерывается и почему $bigFrameFlag = NULL
.
ну 2 return'а там явно ни к чему, но я в принципе уже разобрался. первый else же не выполняется, а цепочка которая выполняется потом по рекурсии возвращает значение но никуда его не записывает. нужен просто счетчик, который будет прерывать цикл, при значении $counter = trace($el, $func);
true
p.s. тем более если просто поставить return как посоветовали, то он на второй итерации просто остановится.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте, я пока что плохо разбираюсь в phpКто может помогите пожалуйста с кодом для обработки
Добрый день, не могу разобратьсяПочему код не работает POST методом