从子数组的值相等的数组中删除元素

时间:2015-01-24 17:54:31

标签: php arrays

我有一个由数组组成的数组。查看此文件gist 如何看待每个数组重复两次。我需要删除第二个,我需要通过'key'数组的值来比较它们 谢谢!

2 个答案:

答案 0 :(得分:1)

在我看来,获得预期结果的最简单方法是:

$data = array(
    array(
        'domain' => 'messages',
        'key' => 'test.testik',
        'message' => array()
    ),
    array(
        'domain' => 'messages',
        'key' => 'test2313.tes31231tik',
        'message' => array()
    ),
    array(
        'domain' => 'validators',
        'key' => 'valid.validik',
        'message' => array()
    ),
    array(
        'domain' => 'validators',
        'key' => 'joga.jimbo',
        'message' => array()
    ),
    array(
        'domain' => 'validators',
        'key' => 'valid.validik',
        'message' => array()
    )
);
$newdata = array();

foreach ($data as $subdata) {
    $newdata[$subdata['key']] = $subdata;
}

$newdata = array_values($newdata); // reset array indizes 

print_r($newdata);

答案 1 :(得分:0)

未定义的偏移量6错误告诉您在位置6处没有数组元素。没有看到您的错误消息和您的代码我无法告诉您错误在哪里但您需要查看元素是否存在使用类似的东西这样:

if (isset($array[index]))
{
  //do something
}

这将处理错误,这意味着你不会得到消息,但你应该看到为什么元素不存在,比如数组制作时是否存在问题。

您的错误消息将告诉您问题出在哪一行,因此哪些数组变量导致了这些错误。

更新:

当您将值与自身进行比较时,您的代码将始终返回true,因此它将是一个空数组。

$transll['key'] == $transll['key']