#php #arrays
#php #массивы
Вопрос:
У меня есть 2-мерный массив, как показано ниже:
$array1 = array
(
array(1, "Harry", "Male", 30),
array(2, "Troy", "Male", 4),
array(3, "Vicky", "Female", 22),
);
Я хочу вернуть, сколько раз 4-й «столбец» превышает фиксированное число 10
Так, например, я преследую следующее:
MalesUnder10 =
MalesOver10 =
FemalesUnder10 =
MalesOver10 =
Спасибо,
Ответ №1:
Вы можете использовать array_filter
для фильтрации массива. Используется count
для подсчета результата
$array1 = array (
array(1, "Harry", "Male", 30),
array(2, "Troy", "Male", 4),
array(3, "Vicky", "Female", 22),
);
$MalesUnder10 = count(array_filter( $array1, function( $o ){
return $o[2] == "Male" amp;amp; $o[3] < 10;
}));
$MalesOver10 = count(array_filter( $array1, function( $o ){
return $o[2] == "Male" amp;amp; $o[3] > 10;
}));
$FemalesUnder10 = count(array_filter( $array1, function( $o ){
return $o[2] == "Female" amp;amp; $o[3] < 10;
}));
$FemalesOver10 = count(array_filter( $array1, function( $o ){
return $o[2] == "Female" amp;amp; $o[3] > 10;
}));
Это приведет к:
$MalesUnder10 = 1
$MalesOver10 = 1
$FemalesUnder10 = 0
$FemalesOver10 = 1
Примечание: люди старше 10 лет не учитывают логику. Вы можете изменить его с помощью $o[3] => 10
или $o[3] =< 10
Вот живая демонстрация. Благодаря Нику
Комментарии:
1. Я просто делал демонстрацию этого самого кода для моего ответа, так что вы также можете добавить его к своему. 3v4l.org/dBN16
2. Спасибо, приятель! Точно!
Ответ №2:
Это может помочь вам подсчитать эти переменные с помощью простого счетчика и foreach
:
$array1 = array
(
array(1, "Harry", "Male", 30),
array(2, "Troy", "Male", 4),
array(3, "Vicky", "Female", 22),
array(3, "Sharon", "Female", 9),
);
$MalesUnder10 = $MalesOver10 = $FemalesUnder10 = $FemalesOver10 = 0;
foreach ($array1 as $arr) {
switch ($arr[3]) {
case $arr[3] > 10:
if ($arr[2] === "Male") {
$MalesOver10 ;
} else {
$FemalesOver10 ;
}
break;
default:
if ($arr[2] === "Female") {
$MalesUnder10 ;
} else {
$FemalesUnder10 ;
}
break;
}
}
var_dump("Number of Males Under 10 is " . $MalesUnder10);
var_dump("Number of Males Over 10 is " . $MalesOver10);
var_dump("Number of Females Under 10 is " . $FemalesUnder10);
var_dump("Number of Females Over 10 is " . $FemalesOver10);
Вывод
string(29) "Number of Males Under 10 is 1"
string(28) "Number of Males Over 10 is 1"
string(31) "Number of Females Under 10 is 1"
string(30) "Number of Females Over 10 is 1"