Софтуерно Инженерство
Loading...
Feel_Up avatar Feel_Up 0 Точки

Взимане стойност от двуизмерен масив за използване във функция

Здравейте. Въпросът ми е относно курсът PHP Web Development Basics, урокът за функционално програмиране. Задачата е да се използва array_filter(), като трябва да вземем стойността на ключа 'години', когато е по малък от 11.

с foreach цикъл получавам резултата, дори без функцията array_filter(), но не знам какви стойности да използвам във array_filter(), за да получа решението ето входа:

$animals = [

[ 'name' => 'Waffles', 'type' => 'dog', 'age' => 12],

[ 'name' => 'Fluffy', 'type' => 'cat', 'age' => 14],

[ 'name' => 'Spelunky', 'type' => 'dog', 'age' => 4],

[ 'name' => 'Hank' , 'type' => 'dog', 'age' => 11],

];

Изхода трябва да е по същия начин, като елиминира кучетата, който са под 11 годишна възраст.

 

OFF TOPIC: И другият ми въпрос. Скъсах с Бил Гейтс и сега съм на Mint Cinnamon, но като имам грешки по кода, в //localhost/ ми показва просто бял екран. Как да получа error message от сорта, което получавах в Windows Ha Chrom-a

/използвам firefox/:

Warning: A non-numeric value encountered in C:\ ...\array_filter.php on line 5

Благодаря за вниманието!

Тагове:
0
PHP Web 24/04/2018 16:53:17
dvdty avatar dvdty 472 Точки

Можеш да подадеш всеки елемент на масива във фукнцията която array_filter приема. В случая този елемент също е масив и взимаме ключа му age.

$animals = array_filter($animals, function($animal) {
    return $animal['age'] < 11;
});

 

0
24/04/2018 18:28:06
Feel_Up avatar Feel_Up 0 Точки

Благодаря ти за отговора. Но като задам функцията по този начин ми принтира целия масив. Порових се дълбоко в нета и със следната функция получих искания резултат:

print_r(array_filter($animals, function($old) {
    if ($old['age'] > 10 && $old['type'] == 'dog') {
        return "<br />";
    }
}));

нямам идея защо съм сложил така ретърна, но ако няма стринг в него програмата не работи :D

 

0
dvdty avatar dvdty 472 Точки
array_filter($animals, function($animal) {
    return $animal['age'] > 10 && $animal['type'] == 'dog';
})

Търсиш това.

С <br /> работи, понеже string със съдържание (каквото и да било), auto cast-нат към bool дава true, но целия if е излишен.

0
24/04/2018 18:52:00