Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 单个多维数组键突然消失?_Php_Serialization_Multidimensional Array_Deserialization - Fatal编程技术网

Php 单个多维数组键突然消失?

Php 单个多维数组键突然消失?,php,serialization,multidimensional-array,deserialization,Php,Serialization,Multidimensional Array,Deserialization,我使用多维数组在脚本中存储一些信息。有数百个额外的密钥,但前三个看起来是这样的(私人信息被审查): 我想消除重复的键值,例如$array[1],它是$array[0]的副本。要做到这一点,我要这样做: function multi_array_unique($array) { $result = array_map("unserialize", array_unique(array_map("serialize", $array))); foreach ($result as $key

我使用多维数组在脚本中存储一些信息。有数百个额外的密钥,但前三个看起来是这样的(私人信息被审查):

我想消除重复的键值,例如
$array[1]
,它是
$array[0]
的副本。要做到这一点,我要这样做:

function multi_array_unique($array)
{
  $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

  foreach ($result as $key => $value) {
    if (is_array($value)) {
      $result[$key] = multi_array_unique($value);
    }
  }

  return $result;
}

$unique_array = multi_array_unique($array);
$unique_array = array_values($unique_array);
现在,这在删除阵列中的所有重复项方面做得非常好。。。除了一件我还没弄明白的小事。这就是阵列现在的外观:

Array
(
    [0] => Array
        (
            [last_name] => LAST NAME
            [first_name] => COLLEEN
            [middle_name] => F
            [dob] => 00/00/87
            [race] => W
            [city] => SOME CITY
        )

    [1] => Array
        (
            [last_name] => LAST NAME
            [first_name] => STEPHANIE
            [middle_name] => L
            [dob] => 00/00/74
            [sex] => F
            [race] => W
            [city] => SOME CITY
        )

    [2] => Array
        (
            [last_name] => LAST NAME
            [first_name] => ASIA
            [middle_name] => ALIA
            [dob] => 00/00/88
            [sex] => F
            [race] => B
            [city] => SOME CITY
        )
)
$array[0][“sex”]
到底去了哪里???这是唯一缺少的一个,我在这个数据集中每隔93个键检查一次。只有
$array[0]
缺少
[“sex”]
键。我完全被难住了。你们有什么想法吗

编辑:

Ray能够提供一个有效的解决方案来实现我想要的结果,但是我仍然想知道是什么原因导致了最初的错误。

以下是Ray的工作代码(改编成函数):


尝试以下操作以消除重复成员:

$newArray = new array();
 foreach($originalArray as $subArray){
     if(!in_array($subArray, $newArray){
         $newArray[] = $subArray;
      }
  }

数组$newArray应该只有原始数组的唯一成员。

您是否试图避免主数组中只有100%重复的子数组?如果一个相似的数组甚至有一个不同的值,你想保留它吗?也许PHP不想做爱,我知道这没有帮助。但我们可以把问题说成:当科琳丢失她的复制品时,她停止了性行为。这让我笑了。忍不住更严肃地指出这一点,试着看看array_map(“serialize”、$array)和array_unique(array_map(“serialize”、$array))@Asad的结果是什么,这是对缺失关键点的另一个双关语吗?Lol修正了一些拼写错误,但是这个方法非常有效。非常感谢。我仍然想知道最初的方法是怎么回事。
function multi_array_unique($multi_array)
{
    $newArray = array();
    foreach($multi_array as $subArray) {
        if(!in_array($subArray, $newArray)) {
            $newArray[] = $subArray;
        }
    }

  return $newArray;
}
$newArray = new array();
 foreach($originalArray as $subArray){
     if(!in_array($subArray, $newArray){
         $newArray[] = $subArray;
      }
  }