PHP-如果数组中除第一个之外的值相同且多个,则更改值

PHP-如果数组中除第一个之外的值相同且多个,则更改值,php,arrays,Php,Arrays,我试图改变一个数组的值,如果一个数组的值被多次转换为,并且改变第一个数组之外的重复值 我有这个阵列: array (size=6) 0 => array (size=3) 'id' => int 1 'data-time-start' => int 0 'data-time-end' => int 5 1 => array (size=3) 'id' => int 2 'd

我试图改变一个数组的值,如果一个数组的值被多次转换为,并且改变第一个数组之外的重复值

我有这个阵列:

array (size=6)
  0 => 
    array (size=3)
      'id' => int 1
      'data-time-start' => int 0
      'data-time-end' => int 5
  1 => 
    array (size=3)
      'id' => int 2
      'data-time-start' => int 6
      'data-time-end' => int 10
  2 => 
    array (size=3)
      'id' => int 1
      'data-time-start' => int 11
      'data-time-end' => int 15
  3 => 
    array (size=3)
      'id' => int 3
      'data-time-start' => int 16
      'data-time-end' => int 20
  4 => 
    array (size=3)
      'id' => int 4
      'data-time-start' => int 21
      'data-time-end' => int 25
  5 => 
    array (size=3)
      'id' => int 3
      'data-time-start' => int 30
      'data-time-end' => int 35
  6 => 
    array (size=3)
      'id' => int 3
      'data-time-start' => int 40
      'data-time-end' => int 45
在这个例子中,我有两次
'id'=int1
和三次
'id'=int3
。 我想做的是保留第一个ID,但将其他重复ID设置为
NULL
,并返回如下数组:

 array (size=6)
  0 => 
    array (size=3)
      'id' => int 1
      'data-time-start' => int 0
      'data-time-end' => int 5
  1 => 
    array (size=3)
      'id' => int 2
      'data-time-start' => int 6
      'data-time-end' => int 10
  2 => 
    array (size=3)
      'id' => null
      'data-time-start' => int 11
      'data-time-end' => int 15
  3 => 
    array (size=3)
      'id' => int 3
      'data-time-start' => int 16
      'data-time-end' => int 20
  4 => 
    array (size=3)
      'id' => int 4
      'data-time-start' => int 21
      'data-time-end' => int 25
  5 => 
    array (size=3)
      'id' => null
      'data-time-start' => int 30
      'data-time-end' => int 35
  6 => 
    array (size=3)
      'id' => null
      'data-time-start' => int 40
      'data-time-end' => int 45
我不是php方面的专家

编辑1:

尝试过:

function setNulForDuplicatesInArray($arr, $keyToFind)
    {
        $newArr = array();
        for ($i = 0; $i < sizeof($arr); $i++) {
            if (in_array($arr[$i], $newArr))
                $newArr[$i][$keyToFind] = null;
            else
                $newArr[] = $arr[$i];
        }
        return $newArr;
    }

var_dump(setNulForDuplicatesInArray($arr, 'id'))
函数setNulForDuplicatesInArray($arr,$keyToFind)
{
$newArr=array();
对于($i=0;$i
但什么也没发生


谢谢你的帮助

这里有一个小函数可以实现这一点:

function replace($arr) {
    $newArr = array();
    for($i=0; $i<sizeof($arr); $i++) {
        if(in_array($arr[$i], $newArr))
            $newArr[$i]['id'] = 'null';
        else
            $newArr[] = $arr[$i];
    }
    return $newArr;
}
功能替换($arr){
$newArr=array();

对于($i=0;$i),这里有一个小函数可以实现这一点:

function replace($arr) {
    $newArr = array();
    for($i=0; $i<sizeof($arr); $i++) {
        if(in_array($arr[$i], $newArr))
            $newArr[$i]['id'] = 'null';
        else
            $newArr[] = $arr[$i];
    }
    return $newArr;
}
功能替换($arr){
$newArr=array();
对于($i=0;$i
函数setNulForDuplicates($theArray){
$myarray=array();
对于($ind=0;$ind
函数集重复($theArray){
$myarray=array();
对于($ind=0;$ind
为什么不通过
var\u dump()
?@anantkumarsing非常糟糕的建议,如果使用
var\u dump
而不是
print\u r
,你会惊讶地发现这里有多少问题会立刻变得显而易见。为什么不通过
var\u dump()呢
?@anantkumarsing非常糟糕的建议,如果使用
var\u dump
而不是
print\u r
,你会惊奇地发现这里有多少问题会立刻变得显而易见。效果很好!但是如果我的数组有其他索引,比如:
array(size=6)0=>array(size=1)'id'=>int 1=>array,该怎么办呢(size=1)'id'=>int22=>array(size=1)'id'=>int23=>array(size=1)'id'=>int3
?我更新了我的帖子,因为数组改变了一点……他的一些索引更有效!但是如果我的数组有其他索引,如:
array(size=6)0=>array(size=1),该怎么办'id'=>int1=>array(size=1)'id'=>int22=>array(size=1)'id'=>int23=>array(size=1)'id'=>int 3
?我更新了我的帖子我更新了我的帖子因为数组改变了一点…他的一些索引更有效!但是如果我的数组有其他索引怎么办?看我的帖子,我更新了!谢谢:)很有效!但是如果我的数组有其他索引怎么办?看我的帖子,我更新了!谢谢:)很好用!但是如果我的数组有其他索引怎么办?看我的帖子,我更新了!谢谢:)你为什么不在帖子中使用print\u rDo不理解它。例如,很好用!但是如果我的数组有其他索引怎么办?看我的帖子,我更新了!谢谢:)你为什么不在帖子中使用print\u rDo不理解它。例如
function setNulForDuplicates($theArray) {
    $myarray = array();
    for ($ind = 0; $ind < count($theArray); $ind++) {
        if (in_array($theArray[$ind], $myarray)) {
            $myarray[$ind]['id'] = 'null';
        } else {
            $myarray[$ind] = $theArray[$ind];
        }
    }
    return $myarray;
}

var_dump(setNulForDuplicates($arr));