Как я могу доставать стоимость, повторенную внутри мультипространственного array в PHP? Я нашел какие-то функции, но они я не функционировали. Есть какая-то родная функция, которая бы это делала?
<?php
$array = array(array(7,18), array(12,7), array(12, 7, 13));
$result = array();
$first = $array[0];
for($i=1; $i<count($array); $i++){
$result = array_intersect ($first, $array[$i]);
$first = $result;
}
print_r($result);//7
?>
function array_icount_values($arr,$lower=true) {
$arr2=array();
if(!is_array($arr['0'])){$arr=array($arr);}
foreach($arr as $k=> $v){
foreach($v as $v2){
if($lower==true) {$v2=strtolower($v2);}
if(!isset($arr2[$v2])){
$arr2[$v2]=1;
}else{
$arr2[$v2]++;
}
}
}
return $arr2;
}
$arr = array_icount_values($arry);
echo "<pre>";
print_r($arr);
exit;
Я это нашел в Stackoverflow, но я не функционирует ни одна ни другая.
Если ты имеешь php5.6:
<?php
// Array multidimensional
$a = [
[1,2,3,4,5,6, 33],
[1,2,5,6,7,9],
[3,4,1,2,8,5,
[1,2,3,9,
[8,
[34]
]
] ,
33, 34
]
];
// Primero hacemos la matriz de una sola dimensión
$b = [];
array_walk_recursive($a, function($a) use (&$b) {
$b[] = $a;
});
/* En caso de ser un array de 2 dimensiones podemos usar
$b = call_user_func_array('array_merge', $a);
ó
$b = array_merge(...$a); <-- en el caso de utilizar PHP > 5.6
*/
// array_count_values: cuenta cada valor retornando un array (valor => cantidad)
// luego filtramos los que tengan un valor > 1
// luego recuperamos las keys (que son los valores originales
$repetidos = array_keys(
array_filter(
array_count_values($b), function($v, $k) {
return $v > 1;
}, ARRAY_FILTER_USE_BOTH)
); // es necesario PHP 5.6 para utilizar tanto keys como values en array_filter
var_dump($repetidos);
// OUTPUT:
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
}
Ты можешь использовать эту комбинацию, всякий раз когда у array не было больше уровней без необходимости циклов:
$result = call_user_func_array('array_merge',$array);
$result = array_count_values ($result);
$result = array_diff($result,array(1));
$result = array_keys($result);
функция array_merge
объедини элементы array в уникуме array.
array_count_values
он возвращает нам число повторений каждой стоимости внутри array.
С array_diff($array,array(1))
мы находим различие между нашим array повторений и array с единственным элементом со стоимостью 1. В сущности мы удаляем keys со стоимостью 1.
Чтобы заканчиваться, мы получаем keys с array_keys
.
Сочинение в единственной линии:
$result = array_keys(array_diff(array_count_values (call_user_func_array('array_merge',$array)),array(1)));
Ты можешь использовать функцию php in_array()
Функционируй следующего способа:
<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
echo "Existe Irix";
}
if (in_array("mac", $os)) {
echo "Existe mac";
}
?>
то, что он делает, состоит в том, чтобы подтверждать, - ли стоимость внутри array.
оставил Тебе ссылку в ней documentaciГіn: http://php.net/manual/es/function.in-array.php
for
@RuralGalaxy
–
09.08.2016, 10:17
in_array()
?
– Mariano
09.08.2016, 19:04