我有一个2维数组,其中包含多个数组,如下所示:
$schema = Array(
Array("prestation_1" => 123, "prestataire_1" => 321, "prestation_2" => 456, "prestataire_2" => 654),
Array("prestation_1" => 123, "prestataire_1" => 321, "prestation_2" => 456, "prestataire_2" => 654),
Array("prestation_1" => 123, "prestataire_1" => 321, "prestation_2" => 456, "prestataire_2" => 654),
Array("prestation_1" => 123, "prestataire_1" => 321, "prestation_2" => 456, "prestataire_2" => 654)
)
注意:主数组中的数组总是具有相同的结构(相同的键)
我想知道我的主阵列$schema
中的每个数组是否等效。
如果是这样,我想返回一个副本,否则我想返回一个空数组。
我知道我可以在foreach循环或类似的东西中比较数组2乘2,但有没有一种正确的方法来实现这一点? 我不知道,我可以用array_map()来实现一种递归函数吗?
答案 0 :(得分:0)
试试这个
function check( $array)
{
$array=array_values($array);
$k=0;
for($i=0;$i<count($array);$i++)
{
if(count($array)-1 > $i)
{
if($array[$i] == $array[$i+1])
$k=0;
else
$k=1;
}
}
if($k == 0)
return $array[0];
else
return array();
}
答案 1 :(得分:0)
试试这个:
function checkArray($schema){
$arr = array_unique($schema);
if(count($arr) == 1){
return $arr;
}
else{
return array();
}
}
答案 2 :(得分:0)
function emptycheck($schema) {
$schema=array_unique($schema);
if(count($schema)=!1){
$schema=array();//empty array
}
return $schema;
}
答案 3 :(得分:0)
最简单的方法是直接比较它们 - 即
$schema[0] == $schema[1]; // etc., checking for the same key/value pairs
或
$schema[0] === $schema[1]; // etc., checking whether key/value pairs, order and types are the same.
否则你必须使用一些diff方法(有回调就像array_udiff) 或编写自己的方法来比较它们。