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));